library;
//
// Problems in library:
//
// pkg/front_end/testcases/patterns/issue51314.dart:7:14: Error: A value of type 'num?' can't be assigned to a variable of type 'String'.
//   String s = v2; // 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::num? v2;
  {
    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 dynamic #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 dynamic #t2 = #0#3#isSet = true in #0#3 = #0#0.{core::Map::[]}(#C1){(core::Object?) → core::num?}) is core::num? && (let final dynamic #t3 = v1 = #0#3#isSet ?{core::num?} #0#3{core::num?} : let final dynamic #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 dynamic #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 dynamic #t6 = v2 = #0#6#isSet ?{core::num?} #0#6{core::num?} : let final dynamic #t7 = #0#6#isSet = true in #0#6 = #0#0.{core::Map::[]}(#C2){(core::Object?) → core::num?} in true)))
      throw{for-error-handling} new core::StateError::•("Pattern matching error");
  }
  core::String s = invalid-expression "pkg/front_end/testcases/patterns/issue51314.dart:7:14: Error: A value of type 'num?' can't be assigned to a variable of type 'String'.
  String s = v2; // Error
             ^" in v2 as{TypeError} core::String;
}

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