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);
}
static method fn2() → dynamic {
  try {
    core::String x = (#C1).{core::String::[]}(1.{core::int::unary-}());
  }
  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
}
