library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart:8:12: Error: Constant evaluation error:
// const c2 = {a: 0, b: 1};
//            ^
// pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart:8:19: Context: The key '<int>[]' conflicts with another existing key in the map.
// const c2 = {a: 0, b: 1};
//                   ^
// pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart:8:7: Context: While analyzing:
// const c2 = {a: 0, b: 1};
//       ^
//
// pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart:9:12: Error: Constant evaluation error:
// const c3 = {a, b};
//            ^
// pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart:9:16: Context: The element '<int>[]' conflicts with another existing element in the set.
// const c3 = {a, b};
//                ^
// pkg/front_end/testcases/nnbd/from_agnostic/from_agnostic.dart:9:7: Context: While analyzing:
// const c3 = {a, b};
//       ^
//
import self as self;
import "dart:core" as core;

import "org-dartlang-testcase:///from_agnostic_lib.dart";

static const field core::bool c1 = #C1;
static const field core::Map<core::List<core::int?>, core::int> c2 = invalid-expression "The key '<int>[]' conflicts with another existing key in the map.";
static const field core::Set<core::List<core::int?>> c3 = invalid-expression "The element '<int>[]' conflicts with another existing element in the set.";
static const field core::List<core::int> c4 = #C2;
static const field core::List<core::int?> c5 = #C2;
static method main() → dynamic {
  #C2;
  #C2;
}

library /*isNonNullableByDefault*/;
import self as self2;
import "dart:core" as core;

static const field core::List<core::int> a = #C3;
static const field core::List<core::int?> b = #C4;

constants  {
  #C1 = true
  #C2 = <core::int*>[]
  #C3 = <core::int>[]
  #C4 = <core::int?>[]
}
