| library /*isNonNullableByDefault*/; |
| import self as self; |
| import "dart:core" as core; |
| |
| static method test(dynamic x) → dynamic { |
| () → void setToOne = () → void {}; |
| #L1: |
| { |
| core::int y; |
| core::int y'; |
| core::double y''; |
| final dynamic #0#0 = x; |
| late final core::int #0#2 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}; |
| late final core::bool #0#4 = #0#2 =={core::num::==}{(core::Object) → core::bool} #C1; |
| 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}; |
| dynamic #t1; |
| if(#0#0 is{ForNonNullableByDefault} core::List<dynamic> && #0#4 && (#0#6 is{ForNonNullableByDefault} core::int && (let final dynamic #t2 = y = #0#6{core::int} in true)) && (let final dynamic #t3 = #0#7 in true) && (() → core::bool { |
| setToOne = () → void { |
| y = 1; |
| }; |
| return true; |
| })(){() → core::bool} && (let final dynamic #t4 = #t1 = y in true) || #0#0 is{ForNonNullableByDefault} core::List<dynamic> && #0#4 && (let final dynamic #t5 = #0#6 in true) && (#0#7 is{ForNonNullableByDefault} core::int && (let final dynamic #t6 = y' = #0#7{core::int} in true)) && (() → core::bool { |
| setToOne = () → void { |
| y' = 1; |
| }; |
| return true; |
| })(){() → core::bool} && (let final dynamic #t7 = #t1 = y' in true)) { |
| core::int y = #t1{core::int}; |
| { |
| setToOne(){() → void}; |
| return y; |
| } |
| } |
| else |
| if(#0#0 is{ForNonNullableByDefault} core::List<dynamic> && #0#2 =={core::num::==}{(core::Object) → core::bool} #C2 && (#0#6 is{ForNonNullableByDefault} core::double && (let final dynamic #t8 = y'' = #0#6{core::double} in true)) && (() → core::bool { |
| setToOne = () → void { |
| y'' = 1.0; |
| }; |
| return true; |
| })(){() → core::bool}) { |
| { |
| setToOne(){() → void}; |
| return y''; |
| } |
| } |
| else { |
| { |
| return null; |
| } |
| } |
| } |
| } |
| static method main() → dynamic { |
| self::expectEquals(self::test(<core::Object>[0, "foo"]), 0); |
| self::expectEquals(self::test(<core::Object>["foo", 0]), 0); |
| self::expectEquals(self::test(<core::double>[3.14]), 1.0); |
| self::expectEquals(self::test(null), null); |
| } |
| 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 = 2 |
| #C2 = 1 |
| } |