library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/magic_const.dart:15:10: Error: Constant expression expected.
// Try inserting 'const'.
// foo({a = Constant(), b = Constant(), c = []}) {}
//          ^^^^^^^^
//
// pkg/front_end/testcases/general/magic_const.dart:15:26: Error: Constant expression expected.
// Try inserting 'const'.
// foo({a = Constant(), b = Constant(), c = []}) {}
//                          ^^^^^^^^
//
// pkg/front_end/testcases/general/magic_const.dart:15:42: Error: Constant expression expected.
// Try inserting 'const'.
// foo({a = Constant(), b = Constant(), c = []}) {}
//                                          ^
//
// pkg/front_end/testcases/general/magic_const.dart:18:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
// Try using a constructor or factory that is 'const'.
//   const NotConstant();
//         ^^^^^^^^^^^
//
// pkg/front_end/testcases/general/magic_const.dart:15:42: Error: Non-constant list literal is not a constant expression.
// foo({a = Constant(), b = Constant(), c = []}) {}
//                                          ^
//
import self as self;
import "dart:core" as core;

class Constant extends core::Object /*hasConstConstructor*/  {
  const constructor •() → self::Constant
    : super core::Object::•()
    ;
}
class NotConstant extends core::Object {
  synthetic constructor •() → self::NotConstant
    : super core::Object::•()
    ;
}
static method foo({dynamic a = #C1, dynamic b = #C1, dynamic c = invalid-expression "Non-constant list literal is not a constant expression."}) → dynamic {}
static method test() → dynamic {
  invalid-expression "pkg/front_end/testcases/general/magic_const.dart:18:9: Error: Cannot invoke a non-'const' constructor where a const expression is expected.
Try using a constructor or factory that is 'const'.
  const NotConstant();
        ^^^^^^^^^^^";
  new self::Constant::•();
  core::bool::fromEnvironment("fisk");
}
static method main() → dynamic {}

constants  {
  #C1 = self::Constant {}
}


Constructor coverage from constants:
org-dartlang-testcase:///magic_const.dart:
- Constant. (from org-dartlang-testcase:///magic_const.dart:10:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart)
