| library /*isNonNullableByDefault*/; |
| import self as self; |
| import "dart:core" as core; |
| |
| static method main() → dynamic { |
| core::int? lateLocalInit; |
| function initLateLocal(core::int value) → core::int { |
| return lateLocalInit = value; |
| } |
| final core::int? lateLocal; |
| function #lateLocal#get() → core::int |
| return let final core::int? #t1 = lateLocal in #t1.==(null) ?{core::int} lateLocal = initLateLocal.call(123) : #t1{core::int}; |
| self::expect(null, lateLocalInit); |
| self::expect(123, #lateLocal#get.call()); |
| self::expect(123, lateLocalInit); |
| function local<T extends core::Object? = dynamic>(T% value) → core::Null? { |
| T? lateGenericLocalInit; |
| function initLateGenericLocal(T% value) → T% { |
| return lateGenericLocalInit = value; |
| } |
| final T? lateGenericLocal; |
| core::bool #lateGenericLocal#isSet = false; |
| function #lateGenericLocal#get() → T% { |
| if(!#lateGenericLocal#isSet) { |
| #lateGenericLocal#isSet = true; |
| lateGenericLocal = initLateGenericLocal.call(value); |
| } |
| return lateGenericLocal{T%}; |
| } |
| self::expect(null, lateGenericLocalInit); |
| self::expect(value, #lateGenericLocal#get.call()); |
| self::expect(value, lateGenericLocalInit); |
| } |
| local.call<core::int?>(null); |
| local.call<core::int?>(42); |
| local.call<core::int>(42); |
| } |
| static method expect(dynamic expected, dynamic actual) → dynamic { |
| if(!expected.{core::Object::==}(actual)) |
| throw "Expected ${expected}, actual ${actual}"; |
| } |