| 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 core::bool #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::_GrowableList::•<core::String>(0); |
| { |
| synthesized core::Iterator<core::MapEntry<dynamic, dynamic>> :sync-for-iterator = map.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<dynamic, dynamic>>}; |
| for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) { |
| core::MapEntry<dynamic, dynamic> entry = :sync-for-iterator.{core::Iterator::current}{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}}}"; |
| } |