blob: b7aafc6de32745c417acf64d3f85964a744f2220 [file] [log] [blame]
library;
import self as self;
import "dart:core" as core;
static method test1() dynamic
return block {
final core::Map<dynamic, dynamic> #t1 = <dynamic, dynamic>{};
for (final core::List<core::Object?> #t2 in <core::List<core::Object?>>[]) {
hoisted core::Object? i;
{
final synthesized core::List<core::Object?> #0#0 = #t2;
if(!(#0#0.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t3 = i = #0#0.{core::List::[]}(0){(core::int) → core::Object?} in true)))
throw{for-error-handling} new core::StateError::•("Pattern matching error");
}
#t1.{core::Map::[]=}{Invariant}(i, i){(dynamic, dynamic) → void};
}
} =>#t1;
static method test2(dynamic x, dynamic another) dynamic
return block {
final core::Map<dynamic, dynamic> #t4 = <dynamic, dynamic>{};
#t4.{core::Map::[]=}{Invariant}(1, 1){(dynamic, dynamic) → void};
for (final dynamic #t5 in x as{TypeError,ForDynamic} core::Iterable<dynamic>) {
hoisted dynamic i;
{
final synthesized dynamic #0#0 = #t5;
if(!(#0#0 is core::List<dynamic> && #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t6 = i = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true)))
throw{for-error-handling} new core::StateError::•("Pattern matching error");
}
for (final dynamic #t7 in x as{TypeError,ForDynamic} core::Iterable<dynamic>) {
hoisted dynamic j;
{
final synthesized dynamic #1#0 = #t7;
if(!(#1#0 is core::List<dynamic> && #1#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C1 && (let final dynamic #t8 = j = #1#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic} in true)))
throw{for-error-handling} new core::StateError::•("Pattern matching error");
}
#t4.{core::Map::addAll}{Invariant}(another as{TypeError,ForDynamic} core::Map<dynamic, dynamic>){(core::Map<dynamic, dynamic>) → void};
}
}
} =>#t4;
static method main() dynamic {
self::expectEquals(self::mapToString(self::test1() as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{}));
self::expectEquals(self::mapToString(self::test2(<dynamic>[], <core::int, core::int>{2: 2}) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{1: 1}));
self::expectEquals(self::mapToString(self::test2(<core::List<core::int>>[<core::int>[0], <core::int>[1], <core::int>[2]], <core::int, core::int>{2: 2}) as{TypeError,ForDynamic} core::Map<dynamic, dynamic>), self::mapToString(<dynamic, dynamic>{1: 1, 2: 2}));
}
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> #t9 = <core::String>[];
for (core::MapEntry<dynamic, dynamic> e in map.{core::Map::entries}{core::Iterable<core::MapEntry<dynamic, dynamic>>})
#t9.{core::List::add}{Invariant}("${e.{core::MapEntry::key}{dynamic}}:${e.{core::MapEntry::value}{dynamic}}"){(core::String) → void};
} =>#t9;
entryStrings.{core::List::sort}(){([(core::String, core::String) →? core::int]) void};
return "{${entryStrings.{core::Iterable::join}(","){([core::String]) → core::String}}}";
}
constants {
#C1 = 1
}