blob: 5d41a8a4ed4d6a91a1a2ae18b65ebea9a776729a [file] [log] [blame]
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
class Class<T extends core::Object? = dynamic> extends core::Object {
static field core::int? _#lateStaticField1 = null;
static field core::bool _#lateStaticField1#isSet = false;
static field core::int? _#lateStaticField2 = null;
static field core::bool _#lateStaticField2#isSet = false;
field core::int? _#Class#lateInstanceField = null;
field core::bool _#Class#lateInstanceField#isSet = false;
final field self::Class::T% field;
covariant-by-class field self::Class::T? _#Class#lateGenericField1 = null;
field core::bool _#Class#lateGenericField1#isSet = false;
covariant-by-class field self::Class::T? _#Class#lateGenericField2 = null;
field core::bool _#Class#lateGenericField2#isSet = false;
constructor •(self::Class::T% field) self::Class<self::Class::T%>
: self::Class::field = field, super core::Object::•()
;
static get lateStaticField1() core::int {
if(!self::Class::_#lateStaticField1#isSet) {
self::Class::_#lateStaticField1 = 87;
self::Class::_#lateStaticField1#isSet = true;
}
return let final core::int? #t1 = self::Class::_#lateStaticField1 in #t1{core::int};
}
static set lateStaticField1(core::int lateStaticField1#param) → void {
self::Class::_#lateStaticField1#isSet = true;
self::Class::_#lateStaticField1 = lateStaticField1#param;
}
static get lateStaticField2() core::int {
if(!self::Class::_#lateStaticField2#isSet) {
self::Class::_#lateStaticField2 = 42;
self::Class::_#lateStaticField2#isSet = true;
}
return let final core::int? #t2 = self::Class::_#lateStaticField2 in #t2{core::int};
}
static set lateStaticField2(core::int lateStaticField2#param) → void {
self::Class::_#lateStaticField2#isSet = true;
self::Class::_#lateStaticField2 = lateStaticField2#param;
}
static method staticMethod() dynamic {
self::expect(42, self::Class::lateStaticField2);
self::Class::lateStaticField2 = 43;
self::expect(43, self::Class::lateStaticField2);
}
get lateInstanceField() core::int {
if(!this.{self::Class::_#Class#lateInstanceField#isSet}{core::bool}) {
this.{self::Class::_#Class#lateInstanceField} = 16;
this.{self::Class::_#Class#lateInstanceField#isSet} = true;
}
return let final core::int? #t3 = this.{self::Class::_#Class#lateInstanceField}{core::int?} in #t3{core::int};
}
set lateInstanceField(core::int lateInstanceField#param) → void {
this.{self::Class::_#Class#lateInstanceField#isSet} = true;
this.{self::Class::_#Class#lateInstanceField} = lateInstanceField#param;
}
get lateGenericField1() self::Class::T% {
if(!this.{self::Class::_#Class#lateGenericField1#isSet}{core::bool}) {
this.{self::Class::_#Class#lateGenericField1} = this.{self::Class::field}{self::Class::T%};
this.{self::Class::_#Class#lateGenericField1#isSet} = true;
}
return let final self::Class::T? #t4 = this.{self::Class::_#Class#lateGenericField1}{self::Class::T?} in #t4{self::Class::T%};
}
set lateGenericField1(covariant-by-class self::Class::T% lateGenericField1#param) → void {
this.{self::Class::_#Class#lateGenericField1#isSet} = true;
this.{self::Class::_#Class#lateGenericField1} = lateGenericField1#param;
}
get lateGenericField2() self::Class::T% {
if(!this.{self::Class::_#Class#lateGenericField2#isSet}{core::bool}) {
this.{self::Class::_#Class#lateGenericField2} = this.{self::Class::field}{self::Class::T%};
this.{self::Class::_#Class#lateGenericField2#isSet} = true;
}
return let final self::Class::T? #t5 = this.{self::Class::_#Class#lateGenericField2}{self::Class::T?} in #t5{self::Class::T%};
}
set lateGenericField2(covariant-by-class self::Class::T% lateGenericField2#param) → void {
this.{self::Class::_#Class#lateGenericField2#isSet} = true;
this.{self::Class::_#Class#lateGenericField2} = lateGenericField2#param;
}
method instanceMethod(covariant-by-class self::Class::T% value) dynamic {
self::expect(16, this.{self::Class::lateInstanceField}{core::int});
this.{self::Class::lateInstanceField} = 17;
self::expect(17, this.{self::Class::lateInstanceField}{core::int});
self::expect(this.{self::Class::field}{self::Class::T%}, this.{self::Class::lateGenericField1}{self::Class::T%});
this.{self::Class::lateGenericField1} = value;
self::expect(value, this.{self::Class::lateGenericField1}{self::Class::T%});
this.{self::Class::lateGenericField2} = value;
self::expect(value, this.{self::Class::lateGenericField2}{self::Class::T%});
}
}
extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
static field lateExtensionField1 = self::_#Extension|lateExtensionField1;
static field lateExtensionField1 = self::_#Extension|lateExtensionField1#isSet;
static get lateExtensionField1 = get self::Extension|lateExtensionField1;
static set lateExtensionField1 = set self::Extension|lateExtensionField1;
static field lateExtensionField2 = self::_#Extension|lateExtensionField2;
static field lateExtensionField2 = self::_#Extension|lateExtensionField2#isSet;
static get lateExtensionField2 = get self::Extension|lateExtensionField2;
static set lateExtensionField2 = set self::Extension|lateExtensionField2;
static method staticMethod = self::Extension|staticMethod;
}
static field core::int? _#lateTopLevelField1 = null;
static field core::bool _#lateTopLevelField1#isSet = false;
static field core::int? _#Extension|lateExtensionField1 = null;
static field core::bool _#Extension|lateExtensionField1#isSet = false;
static field core::int? _#Extension|lateExtensionField2 = null;
static field core::bool _#Extension|lateExtensionField2#isSet = false;
static get lateTopLevelField1() core::int {
if(!self::_#lateTopLevelField1#isSet) {
self::_#lateTopLevelField1 = 123;
self::_#lateTopLevelField1#isSet = true;
}
return let final core::int? #t6 = self::_#lateTopLevelField1 in #t6{core::int};
}
static set lateTopLevelField1(core::int lateTopLevelField1#param) → void {
self::_#lateTopLevelField1#isSet = true;
self::_#lateTopLevelField1 = lateTopLevelField1#param;
}
static get Extension|lateExtensionField1() core::int {
if(!self::_#Extension|lateExtensionField1#isSet) {
self::_#Extension|lateExtensionField1 = 87;
self::_#Extension|lateExtensionField1#isSet = true;
}
return let final core::int? #t7 = self::_#Extension|lateExtensionField1 in #t7{core::int};
}
static set Extension|lateExtensionField1(core::int Extension|lateExtensionField1#param) → void {
self::_#Extension|lateExtensionField1#isSet = true;
self::_#Extension|lateExtensionField1 = Extension|lateExtensionField1#param;
}
static get Extension|lateExtensionField2() core::int {
if(!self::_#Extension|lateExtensionField2#isSet) {
self::_#Extension|lateExtensionField2 = 42;
self::_#Extension|lateExtensionField2#isSet = true;
}
return let final core::int? #t8 = self::_#Extension|lateExtensionField2 in #t8{core::int};
}
static set Extension|lateExtensionField2(core::int Extension|lateExtensionField2#param) → void {
self::_#Extension|lateExtensionField2#isSet = true;
self::_#Extension|lateExtensionField2 = Extension|lateExtensionField2#param;
}
static method Extension|staticMethod() dynamic {
self::expect(42, self::Extension|lateExtensionField2);
self::Extension|lateExtensionField2 = 43;
self::expect(43, self::Extension|lateExtensionField2);
}
static method main() dynamic {
self::expect(123, self::lateTopLevelField1);
self::lateTopLevelField1 = 124;
self::expect(124, self::lateTopLevelField1);
self::expect(87, self::Class::lateStaticField1);
self::Class::lateStaticField1 = 88;
self::expect(88, self::Class::lateStaticField1);
self::Class::staticMethod();
new self::Class::•<core::int>(0).{self::Class::instanceMethod}(42){(core::int) dynamic};
self::expect(87, self::Extension|lateExtensionField1);
self::Extension|lateExtensionField1 = 88;
self::expect(88, self::Extension|lateExtensionField1);
self::Extension|staticMethod();
}
static method expect(dynamic expected, dynamic actual) dynamic {
if(!(expected =={core::Object::==}{(core::Object) core::bool} actual))
throw "Expected ${expected}, actual ${actual}";
}