blob: 5e8787e1cfd7e48235e2be6e6f5ae0210a1c8977 [file] [log] [blame]
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
static method main() dynamic {
lowered core::int? #lateLocal;
function #lateLocal#get() → core::int
return let final core::int? #t1 = #lateLocal in #t1 == null ?{core::int} #lateLocal = 123 : #t1{core::int};
function #lateLocal#set(core::int lateLocal#param) → dynamic
return #lateLocal = lateLocal#param;
self::expect(123, #lateLocal#get(){() → core::int});
self::expect(124, #lateLocal#set(124){(core::int) → dynamic});
self::expect(124, #lateLocal#get(){() → core::int});
function local<T extends core::Object? = dynamic>(T% value1, T% value2) Null {
lowered T? #lateGenericLocal;
lowered core::bool #lateGenericLocal#isSet = false;
function #lateGenericLocal#get() → T% {
if(!#lateGenericLocal#isSet) {
#lateGenericLocal = value1;
#lateGenericLocal#isSet = true;
}
return #lateGenericLocal{T%};
}
function #lateGenericLocal#set(T% lateGenericLocal#param) → dynamic {
#lateGenericLocal#isSet = true;
return #lateGenericLocal = lateGenericLocal#param;
}
self::expect(value1, #lateGenericLocal#get(){() → T%});
self::expect(value2, #lateGenericLocal#set(value2){(T%) → dynamic});
self::expect(value2, #lateGenericLocal#get(){() → T%});
}
local<core::int?>(null, 0){(core::int?, core::int?) Null};
local<core::int?>(0, null){(core::int?, core::int?) Null};
local<core::int>(0, 42){(core::int, core::int) Null};
}
static method expect(dynamic expected, dynamic actual) dynamic {
if(!(expected =={core::Object::==}{(core::Object) core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}