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

static final field core::bool isLegacySubtyping1a = #C1 is core::List<core::int>;
static const field core::bool isLegacySubtyping1b = #C2;
static final field core::bool isLegacySubtyping2a = #C3 is core::List<core::int>;
static const field core::bool isLegacySubtyping2b = #C2;
static final field core::List<core::int> assertLegacySubtyping1a = #C1 as core::List<core::int>;
static const field core::List<core::int> assertLegacySubtyping1b = invalid-expression "Expected constant '<Null>[]' to be of type 'List<int>', but was of type 'List<Null>'.
 - 'List' is from 'dart:core'.";
static final field core::List<core::int> assertLegacySubtyping2a = #C3 as core::List<core::int>;
static const field core::List<core::int> assertLegacySubtyping2b = 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, #C2);
  self::expect(self::isLegacySubtyping2a, #C2);
  self::expect(self::assertLegacySubtyping1a, invalid-expression "Expected constant '<Null>[]' to be of type 'List<int>', but was of type 'List<Null>'.
 - 'List' is from 'dart:core'.");
  self::expect(self::assertLegacySubtyping2a, invalid-expression "Expected constant '<int?>[]' to be of type 'List<int>', but was of type 'List<int?>'.
 - 'List' is from 'dart:core'.");
}
static method expect(dynamic expected, dynamic actual) → dynamic {
  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
    throw "Expected ${expected}, actual ${actual}";
}

constants  {
  #C1 = <Null>[]
  #C2 = false
  #C3 = <core::int?>[]
}
