//
// Problems in component:
//
// pkg/front_end/testcases/nnbd/issue41657.dart:10:41: Error: Constant evaluation error:
// const assertLegacySubtyping1 = <Null>[] as List<int>;
//                                         ^
// pkg/front_end/testcases/nnbd/issue41657.dart:10:41: Context: Expected constant '<Null>[]' to be of type 'List<int>', but was of type 'List<Null>'.
//  - 'List' is from 'dart:core'.
// const assertLegacySubtyping1 = <Null>[] as List<int>;
//                                         ^
// pkg/front_end/testcases/nnbd/issue41657.dart:10:7: Context: While analyzing:
// const assertLegacySubtyping1 = <Null>[] as List<int>;
//       ^
//
// pkg/front_end/testcases/nnbd/issue41657.dart:12:41: Error: Constant evaluation error:
// const assertLegacySubtyping2 = <int?>[] as List<int>;
//                                         ^
// pkg/front_end/testcases/nnbd/issue41657.dart:12:41: Context: Expected constant '<int?>[]' to be of type 'List<int>', but was of type 'List<int?>'.
//  - 'List' is from 'dart:core'.
// const assertLegacySubtyping2 = <int?>[] as List<int>;
//                                         ^
// pkg/front_end/testcases/nnbd/issue41657.dart:12:7: Context: While analyzing:
// const assertLegacySubtyping2 = <int?>[] as List<int>;
//       ^
//
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

static final field core::bool isLegacySubtyping1a = <core::Null?>[] is{ForNonNullableByDefault} core::List<core::int>;
static const field core::bool isLegacySubtyping1b = #C1;
static final field core::bool isLegacySubtyping2a = <core::int?>[] is{ForNonNullableByDefault} core::List<core::int>;
static const field core::bool isLegacySubtyping2b = #C1;
static const field core::List<core::int> assertLegacySubtyping1 = invalid-expression "Expected constant '<Null>[]' to be of type 'List<int>', but was of type 'List<Null>'.
 - 'List' is from 'dart:core'.";
static const field core::List<core::int> assertLegacySubtyping2 = invalid-expression "Expected constant '<int?>[]' to be of type 'List<int>', but was of type 'List<int?>'.
 - 'List' is from 'dart:core'.";
static method main() → void {
  self::expect(self::isLegacySubtyping1a, #C1);
  self::expect(self::isLegacySubtyping2a, #C1);
}
static method expect(dynamic expected, dynamic actual) → dynamic {
  if(!expected.{core::Object::==}(actual))
    throw "Expected ${expected}, actual ${actual}";
}

constants  {
  #C1 = false
}
