library;
//
// Problems in library:
//
// pkg/front_end/testcases/patterns/issue51313.dart:8:11: Error: A value of type 'Map<Object, num?>' can't be assigned to a variable of type 'int'.
//  - 'Map' is from 'dart:core'.
//  - 'Object' is from 'dart:core'.
//   int i = map; // Error
//           ^
//
import self as self;
import "dart:core" as core;

static method test() → void {
  hoisted has-declared-initializer core::num? v1;
  hoisted has-declared-initializer core::Map<core::Object, core::num?> map;
  {
    final synthesized core::Map<core::Object, core::num?> #0#0 = <core::Object, core::num?>{"one": 1, 2: 2};
    synthesized core::num? #0#3;
    synthesized core::bool #0#3#isSet = false;
    synthesized core::num? #0#6;
    synthesized core::bool #0#6#isSet = false;
    if(!((!((#0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool #t1 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?}) == null) || null is core::num? && #0#0.{core::Map::containsKey}(#C1){(core::Object?) → core::bool}) && ((#0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool #t2 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?}) is core::num? && (let final core::num? #t3 = v1 = #0#3#isSet ?{core::num?} #0#3{core::num?} : let final core::bool #t4 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?} in true)) && (!((#0#6#isSet ?{core::num?} #0#6{core::num?} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0.{core::Map::[]}(#C2){(core::Object?) → core::num?}) == null) || null is core::num? && #0#0.{core::Map::containsKey}(#C2){(core::Object?) → core::bool}) && (let final core::num? #t6 = #0#6#isSet ?{core::num?} #0#6{core::num?} : let final core::bool #t7 = #0#6#isSet = true in #0#6 = #0#0.{core::Map::[]}(#C2){(core::Object?) → core::num?} in true) && (let final core::Map<core::Object, core::num?> #t8 = map = #0#0 in true)))
      throw{for-error-handling} new core::StateError::•("Pattern matching error");
  }
  core::print(map.{core::Object::runtimeType}{core::Type});
  core::int i = invalid-expression "pkg/front_end/testcases/patterns/issue51313.dart:8:11: Error: A value of type 'Map<Object, num?>' can't be assigned to a variable of type 'int'.
 - 'Map' is from 'dart:core'.
 - 'Object' is from 'dart:core'.
  int i = map; // Error
          ^" in map as{TypeError} core::int;
}

constants  {
  #C1 = "one"
  #C2 = 2
}

Extra constant evaluation status:
Evaluated: IsExpression @ org-dartlang-testcase:///issue51313.dart:6:14 -> BoolConstant(true)
Evaluated: IsExpression @ org-dartlang-testcase:///issue51313.dart:6:26 -> BoolConstant(true)
Extra constant evaluation: evaluated: 73, effectively constant: 2
