library;
//
// Problems in library:
//
// pkg/front_end/testcases/patterns/invalid.dart:5:8: Error: Type 'Unresolved' not found.
// method(Unresolved o) {
//        ^^^^^^^^^^
//
// pkg/front_end/testcases/patterns/invalid.dart:5:8: Error: 'Unresolved' isn't a type.
// method(Unresolved o) {
//        ^^^^^^^^^^
//
// pkg/front_end/testcases/patterns/invalid.dart:13:10: Error: The method '<' isn't defined for the class 'List<invalid-type>'.
//  - 'List' is from 'dart:core'.
// Try correcting the name to the name of an existing method, or defining a method named '<'.
//     case < 5: // TODO(johnniwinther): Why do we get an error here?
//          ^
//
import self as self;
import "dart:core" as core;

static method method(invalid-type o) → dynamic {
  #L1:
  {
    final synthesized invalid-type #0#0 = o;
    synthesized core::int #0#2;
    synthesized core::bool #0#2#isSet = false;
    synthesized core::Object? #0#14;
    synthesized core::bool #0#14#isSet = false;
    {
      lowered hoisted core::List<invalid-type> a#case#0;
      lowered hoisted core::Object? a#case#1;
      if(#0#0 is core::List<invalid-type> && (#0#2#isSet ?{core::int} #0#2{core::int} : let final dynamic #t1 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}) =={core::num::==}{(core::Object) → core::bool} #C1 || (#0#2#isSet ?{core::int} #0#2{core::int} : let final dynamic #t2 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::>=}(#C2){(core::num) → core::bool} && (let final dynamic #t3 = a#case#0 = #0#0.{core::List::sublist}(1, (#0#2#isSet ?{core::int} #0#2{core::int} : let final dynamic #t4 = #0#2#isSet = true in #0#2 = #0#0.{core::List::length}{core::int}).{core::num::-}(1){(core::num) → core::int}){(core::int, [core::int?]) → core::List<invalid-type>} in true) || true || #0#0 is core::Map<core::Object?, core::Object?> && (!((#0#14#isSet ?{core::Object?} #0#14{core::Object?} : let final dynamic #t5 = #0#14#isSet = true in #0#14 = #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::[]}(#C3){(core::Object?) → core::Object?}) == null) || null is core::Object? && #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::containsKey}(#C3){(core::Object?) → core::bool}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#14#isSet ?{core::Object?} #0#14{core::Object?} : let final dynamic #t6 = #0#14#isSet = true in #0#14 = #0#0{core::Map<core::Object?, core::Object?>}.{core::Map::[]}(#C3){(core::Object?) → core::Object?}) || #0#0 is core::String && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#2#isSet ?{core::int} #0#2{core::int} : let final dynamic #t7 = #0#2#isSet = true in #0#2 = #0#0{core::String}.{core::String::length}{core::int}) || #0#0 =={core::List::==}{(core::Object) → core::bool} #C4 || invalid-expression "pkg/front_end/testcases/patterns/invalid.dart:13:10: Error: The method '<' isn't defined for the class 'List<invalid-type>'.
 - 'List' is from 'dart:core'.
Try correcting the name to the name of an existing method, or defining a method named '<'.
    case < 5: // TODO(johnniwinther): Why do we get an error here?
         ^" || #0#0 is (core::Object?, {a: core::Object?}) && #C3 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, {a: core::Object?})}.$1{core::Object?} && (let final dynamic #t8 = a#case#1 = #0#0{(core::Object?, {a: core::Object?})}.a{core::Object?} in true)) {
      }
    }
  }
}

constants  {
  #C1 = 1
  #C2 = 2
  #C3 = 0
  #C4 = 5
}
