blob: fe76d53d921732e96ea6005580c81511a8b57d5a [file] [log] [blame]
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "dart:math" as math;
class Circle extends core::Object {
final field core::double radius;
constructor •(core::double radius) self::Circle
: self::Circle::radius = radius, super core::Object::•()
;
}
static field (dynamic) →? dynamic captured;
static method test1(dynamic x) dynamic
return block {
core::double? #t1;
core::double r;
final dynamic #0#0 = x;
if(#0#0 is{ForNonNullableByDefault} self::Circle && (let final dynamic #t2 = r = #0#0{self::Circle}.{self::Circle::radius}{core::double} in true) && r.{core::num::>}(0){(core::num) → core::bool})
#t1 = r.{core::double::*}(r){(core::num) → core::double}.{core::double::*}(#C1){(core::num) → core::double};
else
if(true)
#t1 = null;
} =>#t1;
static method test2(dynamic x) dynamic
return block {
dynamic #t3;
core::int a;
core::int b;
core::String a#1;
core::String b#1;
final dynamic #0#0 = x;
late final core::bool #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2;
late final dynamic #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic};
late final dynamic #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic};
if(#0#0 is{ForNonNullableByDefault} core::List<dynamic> && #0#4 && (#0#6 is{ForNonNullableByDefault} core::int && (let final dynamic #t4 = a = #0#6{core::int} in true)) && (#0#7 is{ForNonNullableByDefault} core::int && (let final dynamic #t5 = b = #0#7{core::int} in true)) && (self::captured = (dynamic x) → core::int {
return a.{core::num::+}(b){(core::num) core::int};
}) is{ForNonNullableByDefault} dynamic)
#t3 = self::captured!(a = b){(dynamic) → dynamic};
else
if(#0#0 is{ForNonNullableByDefault} core::List<dynamic> && #0#4 && (#0#6 is{ForNonNullableByDefault} core::String && (let final dynamic #t6 = a#1 = #0#6{core::String} in true)) && (#0#7 is{ForNonNullableByDefault} core::String && (let final dynamic #t7 = b#1 = #0#7{core::String} in true)) && (self::captured = (dynamic x) → core::String {
return a#1.{core::String::+}(b#1){(core::String) → core::String};
}) is{ForNonNullableByDefault} dynamic)
#t3 = self::captured!(a#1 = b#1){(dynamic) → dynamic};
else
if(true)
#t3 = null;
} =>#t3;
static method test3(dynamic x) dynamic {
#L1:
{
core::int a;
core::int b;
core::String a#1;
core::String b#1;
final dynamic #0#0 = x;
late final core::bool #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int} =={core::num::==}{(core::Object) → core::bool} #C2;
late final dynamic #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic};
late final dynamic #0#7 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic};
if(#0#0 is{ForNonNullableByDefault} core::List<dynamic> && #0#4 && (#0#6 is{ForNonNullableByDefault} core::int && (let final dynamic #t8 = a = #0#6{core::int} in true)) && (#0#7 is{ForNonNullableByDefault} core::int && (let final dynamic #t9 = b = #0#7{core::int} in true)) && (self::captured = (dynamic x) → core::int {
return a.{core::num::+}(b){(core::num) core::int};
}) is{ForNonNullableByDefault} dynamic) {
{
return self::captured!(a = b){(dynamic) dynamic};
}
}
else
if(#0#0 is{ForNonNullableByDefault} core::List<dynamic> && #0#4 && (#0#6 is{ForNonNullableByDefault} core::String && (let final dynamic #t10 = a#1 = #0#6{core::String} in true)) && (#0#7 is{ForNonNullableByDefault} core::String && (let final dynamic #t11 = b#1 = #0#7{core::String} in true)) && (self::captured = (dynamic x) → core::String {
return a#1.{core::String::+}(b#1){(core::String) → core::String};
}) is{ForNonNullableByDefault} dynamic) {
{
return self::captured!(a#1 = b#1){(dynamic) → dynamic};
}
}
else {
{
return null;
}
}
}
}
static method main() dynamic {
self::expectEquals(#C1, self::test1(new self::Circle::•(1.0)));
self::expectEquals(null, self::test1(null));
self::expectEquals(4, self::test2(<core::int>[1, 2]));
self::expectEquals("twotwo", self::test2(<core::String>["one", "two"]));
self::expectEquals(null, self::test2(null));
self::expectEquals(4, self::test3(<core::int>[1, 2]));
self::expectEquals("twotwo", self::test3(<core::String>["one", "two"]));
self::expectEquals(null, self::test3(null));
core::print("success");
}
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}.";
}
}
constants {
#C1 = 3.141592653589793
#C2 = 2
}