library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/constants/issue_43431.dart:7:3: Error: Only static fields can be declared as const.
// Try using 'final' instead of 'const', or adding the keyword 'static'.
//   const x = Foo();
//   ^^^^^
//
// pkg/front_end/testcases/general/constants/issue_43431.dart:7:13: Error: Constant expression expected.
// Try inserting 'const'.
//   const x = Foo();
//             ^^^
//
// pkg/front_end/testcases/general/constants/issue_43431.dart:6:9: Error: Constructor is marked 'const' so all fields must be final.
//   const Foo({bool x: true});
//         ^
// pkg/front_end/testcases/general/constants/issue_43431.dart:7:9: Context: Field isn't final, but constructor is 'const'.
//   const x = Foo();
//         ^
//
// pkg/front_end/testcases/general/constants/issue_43431.dart:7:13: Error: Constant evaluation error:
//   const x = Foo();
//             ^
// pkg/front_end/testcases/general/constants/issue_43431.dart:7:13: Context: Constant expression depends on itself.
//   const x = Foo();
//             ^
//
import self as self;
import "dart:core" as core;

class Foo extends core::Object /*hasConstConstructor*/  {
  field self::Foo x = invalid-expression "Constant expression depends on itself.";
  const constructor •({core::bool x = #C1}) → self::Foo
    : super core::Object::•()
    ;
}
static method main() → dynamic {}

constants  {
  #C1 = true
}


Constructor coverage from constants:
org-dartlang-testcase:///issue_43431.dart:
- Foo. (from org-dartlang-testcase:///issue_43431.dart:6:9)
