library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue43290.dart:15:25: Error: Not a constant expression.
//     const Class(length: length);
//                         ^^^^^^
//
// pkg/front_end/testcases/general/issue43290.dart:23:15: Error: Not a constant expression.
//     const a = length;
//               ^^^^^^
//
// pkg/front_end/testcases/general/issue43290.dart:11:11: Error: Constant evaluation error:
//     const Class(length: this.length);
//           ^
// pkg/front_end/testcases/general/issue43290.dart:11:30: Context: Not a constant expression.
//     const Class(length: this.length);
//                              ^
//
// pkg/front_end/testcases/general/issue43290.dart:15:11: Error: Constant evaluation error:
//     const Class(length: length);
//           ^
// pkg/front_end/testcases/general/issue43290.dart:15:25: Context: Not a constant expression.
//     const Class(length: length);
//                         ^
//
// pkg/front_end/testcases/general/issue43290.dart:19:20: Error: Constant evaluation error:
//     const a = this.length;
//                    ^
// pkg/front_end/testcases/general/issue43290.dart:19:20: Context: Not a constant expression.
//     const a = this.length;
//                    ^
// pkg/front_end/testcases/general/issue43290.dart:19:11: Context: While analyzing:
//     const a = this.length;
//           ^
//
// pkg/front_end/testcases/general/issue43290.dart:23:15: Error: Constant evaluation error:
//     const a = length;
//               ^
// pkg/front_end/testcases/general/issue43290.dart:23:15: Context: Not a constant expression.
//     const a = length;
//               ^
// pkg/front_end/testcases/general/issue43290.dart:23:11: Context: While analyzing:
//     const a = length;
//           ^
//
import self as self;
import "dart:core" as core;

class Class extends core::Object /*hasConstConstructor*/  {
  final field core::int length;
  const constructor •({core::int length = #C1}) → self::Class
    : self::Class::length = length, super core::Object::•()
    ;
  method method1a() → dynamic {
    invalid-expression "Not a constant expression.";
  }
  method method1b() → dynamic {
    invalid-expression "Not a constant expression.";
  }
  method method2a() → dynamic {
    const core::int a = invalid-expression "Not a constant expression.";
  }
  method method2b() → dynamic {
    const core::int a = invalid-expression "Not a constant expression.";
  }
}
static method main() → dynamic {}

constants  {
  #C1 = 0
}
