blob: dc529d7e7899cc9dc1830ece05725d0fff07cbf9 [file] [log] [blame]
library;
import self as self;
import "dart:core" as core;
class TypeExpecter<X extends core::Object? = dynamic> extends core::Object {
synthetic constructor •() self::TypeExpecter<self::TypeExpecter::X%>
: super core::Object::•()
;
method checkType<Y extends core::Object? = dynamic>(dynamic value) self::TypeExpecter::checkType::Y% {
if(!(self::TypeExpecter::X% =={core::Type::==}{(core::Object) core::bool} self::TypeExpecter::checkType::Y%)) {
throw "Expected the captured type (${self::TypeExpecter::checkType::Y%}) to be the same as the passed type (${self::TypeExpecter::X%}).";
}
return value as self::TypeExpecter::checkType::Y%;
}
}
static method test1(core::int? x) dynamic {
core::List<core::int> y1 = block {
final core::List<core::int> #t1 = <core::int>[];
final core::int? #t2 = x;
if(!(#t2 == null))
#t1.{core::List::add}{Invariant}(#t2{core::int}){(core::int) → void};
} =>#t1;
self::expectType<core::List<core::int>>(y1);
core::List<core::int> y2 = block {
final core::List<core::int> #t3 = <core::int>[1];
final core::int? #t4 = x;
if(!(#t4 == null))
#t3.{core::List::add}{Invariant}(#t4{core::int}){(core::int) → void};
} =>#t3;
self::expectType<core::List<core::int>>(y2);
core::List<core::num> y3 = block {
final core::List<core::num> #t5 = <core::num>[1.0];
final core::num? #t6 = x;
if(!(#t6 == null))
#t5.{core::List::add}{Invariant}(#t6{core::num}){(core::num) → void};
} =>#t5;
self::expectType<core::List<core::num>>(y3);
}
static method test2(dynamic x) dynamic {
core::List<core::String> y1 = block {
final core::List<core::String> #t7 = <core::String>[];
final core::String? #t8 = new self::TypeExpecter::•<core::String?>().{self::TypeExpecter::checkType}<core::String?>(x){(dynamic) → core::String?};
if(!(#t8 == null))
#t7.{core::List::add}{Invariant}(#t8{core::String}){(core::String) → void};
} =>#t7;
core::List<core::String> y2 = block {
final core::List<core::String> #t9 = <core::String>[""];
final core::String? #t10 = new self::TypeExpecter::•<core::String?>().{self::TypeExpecter::checkType}<core::String?>(x){(dynamic) → core::String?};
if(!(#t10 == null))
#t9.{core::List::add}{Invariant}(#t10{core::String}){(core::String) → void};
} =>#t9;
core::List<dynamic> y3 = block {
final core::List<dynamic> #t11 = <dynamic>[""];
final dynamic #t12 = new self::TypeExpecter::•<dynamic>().{self::TypeExpecter::checkType}<dynamic>(x){(dynamic) → dynamic};
if(!(#t12 == null))
#t11.{core::List::add}{Invariant}(#t12){(dynamic) → void};
} =>#t11;
}
static method test3(core::String? key) dynamic {
core::Map<core::String, core::bool> y1 = block {
final core::Map<core::String, core::bool> #t13 = <core::String, core::bool>{};
final core::String? #t14 = key;
if(!(#t14 == null))
#t13.{core::Map::[]=}{Invariant}(#t14{core::String}, false){(core::String, core::bool) → void};
} =>#t13;
self::expectType<core::Map<core::String, core::bool>>(y1);
core::Map<core::String, core::bool> y2 = block {
final core::Map<core::String, core::bool> #t15 = <core::String, core::bool>{};
#t15.{core::Map::[]=}{Invariant}("", false){(core::String, core::bool) → void};
final core::String? #t16 = key;
if(!(#t16 == null))
#t15.{core::Map::[]=}{Invariant}(#t16{core::String}, false){(core::String, core::bool) → void};
} =>#t15;
self::expectType<core::Map<core::String, core::bool>>(y2);
core::Map<core::Object, core::bool> y3 = block {
final core::Map<core::Object, core::bool> #t17 = <core::Object, core::bool>{};
#t17.{core::Map::[]=}{Invariant}(0, false){(core::Object, core::bool) → void};
final core::Object? #t18 = key;
if(!(#t18 == null))
#t17.{core::Map::[]=}{Invariant}(#t18{core::Object}, false){(core::Object, core::bool) → void};
} =>#t17;
self::expectType<core::Map<core::Object?, core::bool>>(y3);
}
static method test4(dynamic key) dynamic {
core::Map<core::Symbol, core::num> y1 = block {
final core::Map<core::Symbol, core::num> #t19 = <core::Symbol, core::num>{};
final core::Symbol? #t20 = new self::TypeExpecter::•<core::Symbol?>().{self::TypeExpecter::checkType}<core::Symbol?>(key){(dynamic) → core::Symbol?};
if(!(#t20 == null))
#t19.{core::Map::[]=}{Invariant}(#t20{core::Symbol}, 1.0){(core::Symbol, core::num) → void};
} =>#t19;
core::Map<core::Symbol, core::num> y2 = block {
final core::Map<core::Symbol, core::num> #t21 = <core::Symbol, core::num>{};
#t21.{core::Map::[]=}{Invariant}(#C1, 1.0){(core::Symbol, core::num) → void};
final core::Symbol? #t22 = new self::TypeExpecter::•<core::Symbol?>().{self::TypeExpecter::checkType}<core::Symbol?>(key){(dynamic) → core::Symbol?};
if(!(#t22 == null))
#t21.{core::Map::[]=}{Invariant}(#t22{core::Symbol}, 1.0){(core::Symbol, core::num) → void};
} =>#t21;
core::Map<dynamic, core::double> y3 = block {
final core::Map<dynamic, core::double> #t23 = <dynamic, core::double>{};
#t23.{core::Map::[]=}{Invariant}(#C1, 1.0){(dynamic, core::double) → void};
final dynamic #t24 = new self::TypeExpecter::•<dynamic>().{self::TypeExpecter::checkType}<dynamic>(key){(dynamic) → dynamic};
if(!(#t24 == null))
#t23.{core::Map::[]=}{Invariant}(#t24, 1.0){(dynamic, core::double) → void};
} =>#t23;
}
static method test5(core::String? value) dynamic {
core::Map<core::bool, core::String> y1 = block {
final core::Map<core::bool, core::String> #t25 = <core::bool, core::String>{};
final core::bool #t26 = false;
final core::String? #t27 = value;
if(!(#t27 == null))
#t25.{core::Map::[]=}{Invariant}(#t26, #t27{core::String}){(core::bool, core::String) → void};
} =>#t25;
self::expectType<core::Map<core::bool, core::String>>(y1);
core::Map<core::bool, core::String> y2 = block {
final core::Map<core::bool, core::String> #t28 = <core::bool, core::String>{};
#t28.{core::Map::[]=}{Invariant}(false, ""){(core::bool, core::String) → void};
final core::bool #t29 = true;
final core::String? #t30 = value;
if(!(#t30 == null))
#t28.{core::Map::[]=}{Invariant}(#t29, #t30{core::String}){(core::bool, core::String) → void};
} =>#t28;
self::expectType<core::Map<core::bool, core::String>>(y2);
core::Map<core::bool, core::Object> y3 = block {
final core::Map<core::bool, core::Object> #t31 = <core::bool, core::Object>{};
#t31.{core::Map::[]=}{Invariant}(false, 0){(core::bool, core::Object) → void};
final core::bool #t32 = true;
final core::Object? #t33 = value;
if(!(#t33 == null))
#t31.{core::Map::[]=}{Invariant}(#t32, #t33{core::Object}){(core::bool, core::Object) → void};
} =>#t31;
self::expectType<core::Map<core::bool, core::Object?>>(y3);
}
static method test6(dynamic value) dynamic {
core::Map<core::int, core::Symbol> y1 = block {
final core::Map<core::int, core::Symbol> #t34 = <core::int, core::Symbol>{};
final core::int #t35 = 0;
final core::Symbol? #t36 = new self::TypeExpecter::•<core::Symbol?>().{self::TypeExpecter::checkType}<core::Symbol?>(value){(dynamic) → core::Symbol?};
if(!(#t36 == null))
#t34.{core::Map::[]=}{Invariant}(#t35, #t36{core::Symbol}){(core::int, core::Symbol) → void};
} =>#t34;
core::Map<core::int, core::Symbol> y2 = block {
final core::Map<core::int, core::Symbol> #t37 = <core::int, core::Symbol>{};
#t37.{core::Map::[]=}{Invariant}(0, #C1){(core::int, core::Symbol) → void};
final core::int #t38 = 1;
final core::Symbol? #t39 = new self::TypeExpecter::•<core::Symbol?>().{self::TypeExpecter::checkType}<core::Symbol?>(value){(dynamic) → core::Symbol?};
if(!(#t39 == null))
#t37.{core::Map::[]=}{Invariant}(#t38, #t39{core::Symbol}){(core::int, core::Symbol) → void};
} =>#t37;
core::Map<core::int, dynamic> y3 = block {
final core::Map<core::int, dynamic> #t40 = <core::int, dynamic>{};
#t40.{core::Map::[]=}{Invariant}(0, #C1){(core::int, dynamic) → void};
final core::int #t41 = 1;
final dynamic #t42 = new self::TypeExpecter::•<dynamic>().{self::TypeExpecter::checkType}<dynamic>(value){(dynamic) → dynamic};
if(!(#t42 == null))
#t40.{core::Map::[]=}{Invariant}(#t41, #t42){(core::int, dynamic) → void};
} =>#t40;
}
static method test7(core::int? key, core::Symbol? value) dynamic {
core::Map<core::int, core::Symbol> y1 = block {
final core::Map<core::int, core::Symbol> #t43 = <core::int, core::Symbol>{};
final core::int? #t44 = key;
if(!(#t44 == null)) {
final core::Symbol? #t45 = value;
if(!(#t45 == null))
#t43.{core::Map::[]=}{Invariant}(#t44{core::int}, #t45{core::Symbol}){(core::int, core::Symbol) → void};
}
} =>#t43;
self::expectType<core::Map<core::int, core::Symbol>>(y1);
core::Map<core::int, core::Symbol> y2 = block {
final core::Map<core::int, core::Symbol> #t46 = <core::int, core::Symbol>{};
#t46.{core::Map::[]=}{Invariant}(0, #C2){(core::int, core::Symbol) → void};
final core::int? #t47 = key;
if(!(#t47 == null)) {
final core::Symbol? #t48 = value;
if(!(#t48 == null))
#t46.{core::Map::[]=}{Invariant}(#t47{core::int}, #t48{core::Symbol}){(core::int, core::Symbol) → void};
}
} =>#t46;
self::expectType<core::Map<core::int, core::Symbol>>(y2);
core::Map<core::int, core::Object> y3 = block {
final core::Map<core::int, core::Object> #t49 = <core::int, core::Object>{};
#t49.{core::Map::[]=}{Invariant}(0, 1.0){(core::int, core::Object) → void};
final core::int? #t50 = key;
if(!(#t50 == null)) {
final core::Object? #t51 = value;
if(!(#t51 == null))
#t49.{core::Map::[]=}{Invariant}(#t50{core::int}, #t51{core::Object}){(core::int, core::Object) → void};
}
} =>#t49;
self::expectType<core::Map<core::int, core::Object?>>(y3);
core::Map<core::Object, core::Symbol> y4 = block {
final core::Map<core::Object, core::Symbol> #t52 = <core::Object, core::Symbol>{};
#t52.{core::Map::[]=}{Invariant}(false, #C2){(core::Object, core::Symbol) → void};
final core::Object? #t53 = key;
if(!(#t53 == null)) {
final core::Symbol? #t54 = value;
if(!(#t54 == null))
#t52.{core::Map::[]=}{Invariant}(#t53{core::Object}, #t54{core::Symbol}){(core::Object, core::Symbol) → void};
}
} =>#t52;
self::expectType<core::Map<core::Object?, core::Symbol>>(y4);
}
static method test8(dynamic key, dynamic value) dynamic {
core::Map<core::String, core::double> y1 = block {
final core::Map<core::String, core::double> #t55 = <core::String, core::double>{};
final core::String? #t56 = new self::TypeExpecter::•<core::String?>().{self::TypeExpecter::checkType}<core::String?>(key){(dynamic) → core::String?};
if(!(#t56 == null)) {
final core::double? #t57 = new self::TypeExpecter::•<core::double?>().{self::TypeExpecter::checkType}<core::double?>(value){(dynamic) → core::double?};
if(!(#t57 == null))
#t55.{core::Map::[]=}{Invariant}(#t56{core::String}, #t57{core::double}){(core::String, core::double) → void};
}
} =>#t55;
core::Map<core::String, core::double> y2 = block {
final core::Map<core::String, core::double> #t58 = <core::String, core::double>{};
#t58.{core::Map::[]=}{Invariant}("", 1.0){(core::String, core::double) → void};
final core::String? #t59 = new self::TypeExpecter::•<core::String?>().{self::TypeExpecter::checkType}<core::String?>(key){(dynamic) → core::String?};
if(!(#t59 == null)) {
final core::double? #t60 = new self::TypeExpecter::•<core::double?>().{self::TypeExpecter::checkType}<core::double?>(value){(dynamic) → core::double?};
if(!(#t60 == null))
#t58.{core::Map::[]=}{Invariant}(#t59{core::String}, #t60{core::double}){(core::String, core::double) → void};
}
} =>#t58;
core::Map<dynamic, dynamic> y3 = block {
final core::Map<dynamic, dynamic> #t61 = <dynamic, dynamic>{};
#t61.{core::Map::[]=}{Invariant}("", 1.0){(dynamic, dynamic) → void};
final dynamic #t62 = new self::TypeExpecter::•<dynamic>().{self::TypeExpecter::checkType}<dynamic>(key){(dynamic) → dynamic};
if(!(#t62 == null)) {
final dynamic #t63 = new self::TypeExpecter::•<dynamic>().{self::TypeExpecter::checkType}<dynamic>(value){(dynamic) → dynamic};
if(!(#t63 == null))
#t61.{core::Map::[]=}{Invariant}(#t62, #t63){(dynamic, dynamic) → void};
}
} =>#t61;
}
static method main() dynamic {
self::test1(0);
self::test1(null);
self::test2("element");
self::test2(null);
self::expectThrows<core::TypeError>(() void {
self::test2(0);
});
self::test3("key");
self::test3(null);
self::test4(#C3);
self::test4(null);
self::expectThrows<core::TypeError>(() void {
self::test4("foo");
});
self::test5("value");
self::test5(null);
self::test6(#C3);
self::test6(null);
self::expectThrows<core::TypeError>(() void {
self::test6("foo");
});
self::test7(0, #C2);
self::test7(0, null);
self::test7(null, #C2);
self::test7(null, null);
self::test8("key", 1.0);
self::test8("key", null);
self::test8(null, 1.0);
self::test8(null, null);
self::expectThrows<core::TypeError>(() void {
self::test8(#C1, 1.0);
});
self::expectThrows<core::TypeError>(() void {
self::test8("key", "value");
});
self::expectThrows<core::TypeError>(() void {
self::test8(#C1, "value");
});
}
static method expectType<T extends core::Object? = dynamic>(dynamic x) dynamic {
if(!(x is self::expectType::T%)) {
throw "Expected the passed value to be of type 'T', got '${x.{core::Object::runtimeType}{<object>}.{core::Type}}'.";
}
}
static method expectThrows<T extends core::Object? = dynamic>(() void f) dynamic {
core::bool hasThrownT = true;
try {
f(){() void};
hasThrownT = false;
}
on self::expectThrows::T% catch(no-exception-var) {
hasThrownT = true;
}
on dynamic catch(no-exception-var) {
hasThrownT = false;
}
if(!hasThrownT) {
throw "Expected the passed function to throw.";
}
}
constants {
#C1 = #key
#C2 = #value
#C3 = #foo
}