blob: 04c732b00042bd53716f0dbe4e521cf1a585bd25 [file] [log] [blame]
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 = new col::_Set::•<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 core::bool* #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) is core::int && (let final core::int #t3 = i = (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool* #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 core::bool* #t5 = #0#7#isSet = true in #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic}) is core::int && (let final core::int #t6 = n = (#0#7#isSet ?{dynamic} #0#7{dynamic} : let final core::bool* #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}) {
synthesized core::Iterator<dynamic> :sync-for-iterator = (another as{TypeError,ForDynamic} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() core::bool}; ) {
final dynamic #t10 = :sync-for-iterator.{core::Iterator::current}{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 = new col::_Set::•<dynamic>();
{
final synthesized dynamic #0#0 = x;
if(#0#0 is core::String) {
synthesized core::Iterator<invalid-type> :sync-for-iterator = another.{core::Iterable::iterator}{core::Iterator<invalid-type>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() core::bool}; ) {
final dynamic #t13 = :sync-for-iterator.{core::Iterator::current}{invalid-type};
{
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 = new col::_Set::•<dynamic>();
{
synthesized core::Iterator<dynamic> :sync-for-iterator = (x as{TypeError,ForDynamic} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() core::bool}; ) {
final dynamic #t16 = :sync-for-iterator.{core::Iterator::current}{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");
}
{
synthesized core::Iterator<dynamic> :sync-for-iterator = (another as{TypeError,ForDynamic} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() core::bool}; ) {
final dynamic #t17 = :sync-for-iterator.{core::Iterator::current}{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::_GrowableList::_literal2<core::int>(0, 2), block {
final core::Set<core::int> #t19 = new col::_Set::•<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 = new col::_Set::•<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::_GrowableList::_literal2<core::int>(0, 0), block {
final core::Set<core::int> #t21 = new col::_Set::•<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 = new col::_Set::•<dynamic>();
} =>#t22);
self::expectThrows(() void => self::test1(core::_GrowableList::•<dynamic>(0), <dynamic, dynamic>{}));
self::expectSetEquals(self::test2("foo", block {
final core::Set<core::int> #t23 = new col::_Set::•<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 = new col::_Set::•<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 = new col::_Set::•<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 = new col::_Set::•<dynamic>();
} =>#t26);
self::expectSetEquals(self::test3(core::_GrowableList::_literal2<core::List<core::int>>(core::_GrowableList::_literal1<core::int>(0), core::_GrowableList::_literal1<core::int>(1)), block {
final core::Set<core::int> #t27 = new col::_Set::•<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 = new col::_Set::•<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(core::_GrowableList::_literal1<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
}