blob: be67cd5b67cebf13e5d888bc7f3724aae1a15fa1 [file] [log] [blame]
library;
import self as self;
import "dart:core" as core;
static method test1(dynamic x) dynamic
return block {
final core::Map<core::int, core::int> #t1 = <core::int, core::int>{};
#t1.{core::Map::[]=}{Invariant}(1, 1){(core::int, core::int) → void};
{
final synthesized dynamic #0#0 = x;
{
hoisted core::int y;
if(#0#0 is core::int) {
y = #0#0{core::int};
#t1.{core::Map::[]=}{Invariant}(2, y){(core::int, core::int) → void};
}
}
}
#t1.{core::Map::[]=}{Invariant}(3, 3){(core::int, core::int) → void};
} =>#t1;
static method test2(dynamic x) dynamic
return block {
final core::Map<core::int, core::Object?> #t2 = <core::int, core::Object?>{};
#t2.{core::Map::[]=}{Invariant}(1, 1){(core::int, core::Object?) → void};
{
final synthesized dynamic #0#0 = x;
{
hoisted core::String y;
if(#0#0 is core::String) {
y = #0#0{core::String};
#t2.{core::Map::[]=}{Invariant}(2, y){(core::int, core::Object?) → void};
}
else
#t2.{core::Map::[]=}{Invariant}(2, null){(core::int, core::Object?) → void};
}
}
#t2.{core::Map::[]=}{Invariant}(3, 3){(core::int, core::Object?) → void};
} =>#t2;
static method test3(dynamic x) dynamic
return block {
final core::Map<core::int, core::Object> #t3 = <core::int, core::Object>{};
#t3.{core::Map::[]=}{Invariant}(1, 1){(core::int, core::Object) → void};
{
final synthesized dynamic #0#0 = x;
{
hoisted core::bool b;
if(#0#0 is core::bool && (let final dynamic #t4 = b = #0#0{core::bool} in true) && b)
#t3.{core::Map::[]=}{Invariant}(2, b){(core::int, core::Object) → void};
}
}
#t3.{core::Map::[]=}{Invariant}(3, 3){(core::int, core::Object) → void};
} =>#t3;
static method main() dynamic {
self::expectEquals(self::mapToString(self::test1(0) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{1: 1, 2: 0, 3: 3}));
self::expectEquals(self::mapToString(self::test1("foo") as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{1: 1, 3: 3}));
self::expectEquals(self::mapToString(self::test2("foo") as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{1: 1, 2: "foo", 3: 3}));
self::expectEquals(self::mapToString(self::test2(false) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{1: 1, 2: null, 3: 3}));
self::expectEquals(self::mapToString(self::test3(true) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{1: 1, 2: true, 3: 3}));
self::expectEquals(self::mapToString(self::test3(false) 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 equal to '${y}'.";
}
}
static method mapToString(core::Map<dynamic, dynamic> map) dynamic {
core::List<core::String> entryStrings = block {
final core::List<core::String> #t5 = <core::String>[];
for (core::MapEntry<dynamic, dynamic> entry in map.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>})
#t5.{core::List::add}{Invariant}("${entry.{core::MapEntry::key}{dynamic}}:${entry.{core::MapEntry::value}{dynamic}}"){(core::String) → void};
} =>#t5;
entryStrings.{core::List::sort}(){([(core::String, core::String) →? core::int]) void};
return "{${entryStrings.{core::Iterable::join}(","){([core::String]) → core::String}}}";
}