library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "package:expect/expect.dart" as exp;

import "package:expect/expect.dart";

static const field core::String str = #C1;
static const field core::String var1 = #C2;
static const field dynamic var2 = #C3;
static const field core::String var3 = #C3;
static const field dynamic var4 = #C4;
static method fn() → dynamic {
  core::String local = "str";
  return local.{core::String::[]}(0){(core::int) → core::String};
}
static method fn2() → dynamic {
  try {
    core::String x = (#C1).{core::String::[]}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::String};
  }
  on core::RangeError catch(no-exception-var) {
    return 2;
  }
}
static method main() → void {
  exp::Expect::equals(#C2, "r");
  exp::Expect::equals(#C3, "s");
  exp::Expect::equals(#C3, "s");
  exp::Expect::equals(#C4, 2);
}

constants  {
  #C1 = "str"
  #C2 = "r"
  #C3 = "s"
  #C4 = 2
}

Extra constant evaluation status:
Evaluated: InstanceInvocation @ org-dartlang-testcase:///const_functions_string.dart:23:17 -> IntConstant(-1)
Extra constant evaluation: evaluated: 8, effectively constant: 1
