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