blob: 26ef4c14fe26d24313e5650295893ac29505cda8 [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) dynamic {
return block {
final core::Map<dynamic, dynamic> #t1 = <dynamic, dynamic>{};
#t1.{core::Map::[]=}{Invariant}(1, 1){(dynamic, dynamic) → void};
{
final synthesized dynamic #0#0 = x;
{
hoisted core::String y;
if(#0#0 is core::String) {
y = #0#0{core::String};
#t1.{core::Map::addAll}{Invariant}(another){(core::Map<dynamic, dynamic>) → void};
}
}
}
#t1.{core::Map::[]=}{Invariant}(3, 3){(dynamic, dynamic) → void};
} =>#t1;
}
static method test2(core::bool b, dynamic x, dynamic another) dynamic {
return block {
final core::Map<dynamic, dynamic> #t2 = <dynamic, dynamic>{};
#t2.{core::Map::[]=}{Invariant}(1, 1){(dynamic, dynamic) → void};
if(b) {
final synthesized dynamic #0#0 = x;
{
hoisted core::String y;
if(#0#0 is core::String) {
y = #0#0{core::String};
#t2.{core::Map::addAll}{Invariant}(another){(core::Map<dynamic, dynamic>) → void};
}
}
}
#t2.{core::Map::[]=}{Invariant}(3, 3){(dynamic, dynamic) → void};
} =>#t2;
}
static method test3(dynamic x, dynamic y, dynamic another) dynamic {
return block {
final core::Map<dynamic, dynamic> #t3 = <dynamic, dynamic>{};
#t3.{core::Map::[]=}{Invariant}(1, 1){(dynamic, dynamic) → void};
{
final synthesized dynamic #0#0 = x;
{
hoisted core::int x2;
if(#0#0 is core::int) {
x2 = #0#0{core::int};
#t3.{core::Map::[]=}{Invariant}(2, x2){(dynamic, dynamic) → void};
}
else {
final synthesized dynamic #1#0 = y;
{
hoisted core::int y2;
if(#1#0 is core::int) {
y2 = #1#0{core::int};
#t3.{core::Map::addAll}{Invariant}(another){(core::Map<dynamic, dynamic>) → void};
}
}
}
}
}
#t3.{core::Map::[]=}{Invariant}(3, 3){(dynamic, dynamic) → void};
} =>#t3;
}
static method main() dynamic {
self::expectEquals(self::mapToString(self::test1("foo", <core::int, core::int>{2: 2}) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{1: 1, 2: 2, 3: 3}));
self::expectEquals(self::mapToString(self::test1(false, <core::int, core::int>{2: 2}) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{1: 1, 3: 3}));
self::expectEquals(self::mapToString(self::test2(true, "foo", <core::int, core::int>{2: 2}) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{1: 1, 2: 2, 3: 3}));
self::expectEquals(self::mapToString(self::test2(false, "foo", <core::int, core::int>{2: 2}) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{1: 1, 3: 3}));
self::expectEquals(self::mapToString(self::test2(true, false, <core::int, core::int>{2: 2}) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{1: 1, 3: 3}));
self::expectEquals(self::mapToString(self::test3(0, 1, <core::int, core::int>{2: 2}) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{1: 1, 2: 0, 3: 3}));
self::expectEquals(self::mapToString(self::test3("foo", 1, <core::int, core::int>{2: 2}) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{1: 1, 2: 2, 3: 3}));
self::expectEquals(self::mapToString(self::test3("foo", "bar", block {
final core::Set<core::int> #t4 = col::LinkedHashSet::•<core::int>();
#t4.{core::Set::add}{Invariant}(2){(core::int) → core::bool};
#t4.{core::Set::add}{Invariant}(2){(core::int) → core::bool};
} =>#t4) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{1: 1, 3: 3}));
}
static method expectEquals(dynamic x, dynamic y) dynamic {
if(!(x =={core::Object::==}{(core::Object) core::bool} y)) {
throw "Expected '${x}' to be equals to '${y}'.";
}
}
static method mapToString(core::Map<dynamic, dynamic> map) dynamic {
core::List<core::String> entryStrings = <core::String>[];
for (core::MapEntry<dynamic, dynamic> entry in map.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}) {
entryStrings.{core::List::add}("${entry.{core::MapEntry::key}{dynamic}}:${entry.{core::MapEntry::value}{dynamic}}"){(core::String) void};
}
entryStrings.{core::List::sort}(){([(core::String, core::String) →? core::int]) void};
return "{${entryStrings.{core::Iterable::join}(","){([core::String]) → core::String}}}";
}