blob: 8a5dd629bcf7014b647f13268ff132637bfa8691 [file] [log] [blame]
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) 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 = initLateGenericLocal.call(value);
#lateGenericLocal#isSet = true;
}
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}";
}