library;
import self as self;
import "dart:core" as core;

class A extends core::Object {
  final field core::int bar;
  const constructor •(core::int bar) → void
    : self::A::bar = bar, super core::Object::•()
    ;
}
class B extends core::Object {
  final field self::A baz;
  const constructor •(self::A baz) → void
    : self::B::baz = baz, super core::Object::•()
    ;
}
class C extends core::Object {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
  method fun() → dynamic {
    invalid-expression "pkg/front_end/testcases/nested_implicit_const_with_env_var.dart:21:39: Error: The keyword 'const' or 'new' is required here. Due to an implementation limit, the compiler isn't able to infer 'const' or 'new' here.
    /*@error=CantDetermineConstness*/ B(
                                      ^";
  }
}
static const field core::int foo = const core::int::fromEnvironment("fisk");
static method main() → dynamic {}
