| library; |
| import self as self; |
| import "dart:core" as core; |
| import "dart:collection" as col; |
| |
| static method test1(dynamic x, dynamic another) → core::Iterable<dynamic> { |
| return block { |
| final core::Set<dynamic> #t1 = col::LinkedHashSet::•<dynamic>(); |
| hoisted core::int i; |
| hoisted core::int n; |
| { |
| final synthesized dynamic #0#0 = x as{TypeError,ForDynamic} core::List<core::int>; |
| synthesized dynamic #0#6; |
| synthesized core::bool #0#6#isSet = false; |
| synthesized dynamic #0#7; |
| synthesized core::bool #0#7#isSet = false; |
| if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && ((#0#6#isSet ?{dynamic} #0#6{dynamic} : let final dynamic #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final dynamic #t3 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final dynamic #t4 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) as{Unchecked} core::int in true)) && ((#0#7#isSet ?{dynamic} #0#7{dynamic} : let final dynamic #t5 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final dynamic #t6 = n = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final dynamic #t7 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) as{Unchecked} core::int in true)))) |
| throw{for-error-handling} new core::StateError::•("Pattern matching error"); |
| } |
| final core::int #t8 = i; |
| final core::int #t9 = n; |
| for (core::int i = #t8, core::int n = #t9; i.{core::num::<}(n){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) |
| for (final has-declared-initializer dynamic #t10 in another as{TypeError,ForDynamic} core::Iterable<dynamic>) { |
| final dynamic #t11 = #t10 as{TypeError} dynamic; |
| #t1.{core::Set::add}{Invariant}(#t11){(dynamic) → core::bool}; |
| } |
| } =>#t1; |
| } |
| static method test2(dynamic x, dynamic another) → core::Iterable<dynamic> { |
| return block { |
| final core::Set<dynamic> #t12 = col::LinkedHashSet::•<dynamic>(); |
| { |
| final synthesized dynamic #0#0 = x; |
| if(#0#0 is core::String) |
| for (final has-declared-initializer dynamic #t13 in another) { |
| final dynamic #t14 = #t13 as{TypeError} dynamic; |
| #t12.{core::Set::add}{Invariant}(#t14){(dynamic) → core::bool}; |
| } |
| } |
| } =>#t12; |
| } |
| static method test3(dynamic x, dynamic another) → core::Iterable<dynamic> { |
| return block { |
| final core::Set<dynamic> #t15 = col::LinkedHashSet::•<dynamic>(); |
| for (final dynamic #t16 in x as{TypeError,ForDynamic} core::Iterable<dynamic>) { |
| { |
| final synthesized dynamic #0#0 = #t16; |
| if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2 && #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} is core::int)) |
| throw{for-error-handling} new core::StateError::•("Pattern matching error"); |
| } |
| for (final has-declared-initializer dynamic #t17 in another as{TypeError,ForDynamic} core::Iterable<dynamic>) { |
| final dynamic #t18 = #t17 as{TypeError} dynamic; |
| #t15.{core::Set::add}{Invariant}(#t18){(dynamic) → core::bool}; |
| } |
| } |
| } =>#t15; |
| } |
| static method main() → dynamic { |
| self::expectSetEquals(self::test1(<core::int>[0, 2], block { |
| final core::Set<core::int> #t19 = col::LinkedHashSet::•<core::int>(); |
| #t19.{core::Set::add}{Invariant}(1){(core::int) → core::bool}; |
| #t19.{core::Set::add}{Invariant}(2){(core::int) → core::bool}; |
| #t19.{core::Set::add}{Invariant}(3){(core::int) → core::bool}; |
| } =>#t19) as core::Set<dynamic>, block { |
| final core::Set<dynamic> #t20 = col::LinkedHashSet::•<dynamic>(); |
| #t20.{core::Set::add}{Invariant}(1){(dynamic) → core::bool}; |
| #t20.{core::Set::add}{Invariant}(2){(dynamic) → core::bool}; |
| #t20.{core::Set::add}{Invariant}(3){(dynamic) → core::bool}; |
| } =>#t20); |
| self::expectSetEquals(self::test2(<core::int>[0, 0], block { |
| final core::Set<core::int> #t21 = col::LinkedHashSet::•<core::int>(); |
| #t21.{core::Set::add}{Invariant}(1){(core::int) → core::bool}; |
| #t21.{core::Set::add}{Invariant}(2){(core::int) → core::bool}; |
| #t21.{core::Set::add}{Invariant}(3){(core::int) → core::bool}; |
| } =>#t21) as core::Set<dynamic>, block { |
| final core::Set<dynamic> #t22 = col::LinkedHashSet::•<dynamic>(); |
| } =>#t22); |
| self::expectThrows(() → void => self::test1(<dynamic>[], <dynamic, dynamic>{})); |
| self::expectSetEquals(self::test2("foo", block { |
| final core::Set<core::int> #t23 = col::LinkedHashSet::•<core::int>(); |
| #t23.{core::Set::add}{Invariant}(1){(core::int) → core::bool}; |
| #t23.{core::Set::add}{Invariant}(2){(core::int) → core::bool}; |
| #t23.{core::Set::add}{Invariant}(3){(core::int) → core::bool}; |
| } =>#t23) as core::Set<dynamic>, block { |
| final core::Set<dynamic> #t24 = col::LinkedHashSet::•<dynamic>(); |
| #t24.{core::Set::add}{Invariant}(1){(dynamic) → core::bool}; |
| #t24.{core::Set::add}{Invariant}(2){(dynamic) → core::bool}; |
| #t24.{core::Set::add}{Invariant}(3){(dynamic) → core::bool}; |
| } =>#t24); |
| self::expectSetEquals(self::test2(false, block { |
| final core::Set<core::int> #t25 = col::LinkedHashSet::•<core::int>(); |
| #t25.{core::Set::add}{Invariant}(1){(core::int) → core::bool}; |
| #t25.{core::Set::add}{Invariant}(2){(core::int) → core::bool}; |
| #t25.{core::Set::add}{Invariant}(3){(core::int) → core::bool}; |
| } =>#t25) as core::Set<dynamic>, block { |
| final core::Set<dynamic> #t26 = col::LinkedHashSet::•<dynamic>(); |
| } =>#t26); |
| self::expectSetEquals(self::test3(<core::List<core::int>>[<core::int>[0], <core::int>[1]], block { |
| final core::Set<core::int> #t27 = col::LinkedHashSet::•<core::int>(); |
| #t27.{core::Set::add}{Invariant}(1){(core::int) → core::bool}; |
| #t27.{core::Set::add}{Invariant}(2){(core::int) → core::bool}; |
| #t27.{core::Set::add}{Invariant}(3){(core::int) → core::bool}; |
| } =>#t27) as core::Set<dynamic>, block { |
| final core::Set<dynamic> #t28 = col::LinkedHashSet::•<dynamic>(); |
| #t28.{core::Set::add}{Invariant}(1){(dynamic) → core::bool}; |
| #t28.{core::Set::add}{Invariant}(2){(dynamic) → core::bool}; |
| #t28.{core::Set::add}{Invariant}(3){(dynamic) → core::bool}; |
| } =>#t28); |
| self::expectThrows(() → void => self::test3(<Null>[null], <dynamic, dynamic>{})); |
| } |
| static method expectSetEquals(core::Set<dynamic> x, core::Set<dynamic> y) → dynamic { |
| if(!x.{core::Set::containsAll}(y){(core::Iterable<core::Object?>) → core::bool} || !y.{core::Set::containsAll}(x){(core::Iterable<core::Object?>) → core::bool}) { |
| throw "Expected sets '${x}' and '${y}' to be equal."; |
| } |
| } |
| static method expectThrows(() → void f) → dynamic { |
| core::bool hasThrown = true; |
| try { |
| f(){() → void}; |
| hasThrown = false; |
| } |
| on core::Object catch(final core::Object e) { |
| } |
| if(!hasThrown) { |
| throw "Expected the function to throw."; |
| } |
| } |
| |
| constants { |
| #C1 = 2 |
| #C2 = 1 |
| } |