blob: 5d1075d3c467f402f2e1a2d614e218a442f8f538 [file] [log] [blame]
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "dart:_internal" as _in;
class B extends core::Object {
final field core::int x;
constructor •(core::int x) self::B
: self::B::x = x, super core::Object::•()
;
}
class C extends self::B {
field core::int? _#C#y = null;
field core::bool _#C#y#isSet = false;
constructor •(core::int x) self::C
: super self::B::•(x)
;
get y() core::int {
if(!this.{self::C::_#C#y#isSet}) {
final core::int #t1 = this.{self::B::x}.{core::num::+}(1);
if(this.{self::C::_#C#y#isSet})
throw new _in::LateError::fieldADI("y");
this.{self::C::_#C#y} = #t1;
this.{self::C::_#C#y#isSet} = true;
}
return let final core::int? #t2 = this.{self::C::_#C#y} in #t2{core::int};
}
method method() dynamic
return this.{self::B::x};
}
class Class<T extends core::Object? = dynamic> extends core::Object {
static field core::int? lateStaticField1Init = null;
static field core::int? _#lateStaticField1 = null;
static field core::bool _#lateStaticField1#isSet = false;
static field core::int? lateStaticField2Init = null;
static field core::int? _#lateStaticField2 = null;
static field core::bool _#lateStaticField2#isSet = false;
field core::int? lateInstanceFieldInit = null;
field core::int? _#Class#lateInstanceField = null;
field core::bool _#Class#lateInstanceField#isSet = false;
generic-covariant-impl field self::Class::T? lateGenericFieldInit = null;
final field self::Class::T% field;
field self::Class::T? _#Class#lateGenericField = null;
field core::bool _#Class#lateGenericField#isSet = false;
constructor •(self::Class::T% field) self::Class<self::Class::T%>
: self::Class::field = field, super core::Object::•()
;
static method initLateStaticField1(core::int value) core::int {
return self::Class::lateStaticField1Init = value;
}
static get lateStaticField1() core::int {
if(!self::Class::_#lateStaticField1#isSet) {
final core::int #t3 = self::Class::initLateStaticField1(87);
if(self::Class::_#lateStaticField1#isSet)
throw new _in::LateError::fieldADI("lateStaticField1");
self::Class::_#lateStaticField1 = #t3;
self::Class::_#lateStaticField1#isSet = true;
}
return let final core::int? #t4 = self::Class::_#lateStaticField1 in #t4{core::int};
}
static method initLateStaticField2(core::int value) core::int {
return self::Class::lateStaticField2Init = value;
}
static get lateStaticField2() core::int {
if(!self::Class::_#lateStaticField2#isSet) {
final core::int #t5 = self::Class::initLateStaticField2(42);
if(self::Class::_#lateStaticField2#isSet)
throw new _in::LateError::fieldADI("lateStaticField2");
self::Class::_#lateStaticField2 = #t5;
self::Class::_#lateStaticField2#isSet = true;
}
return let final core::int? #t6 = self::Class::_#lateStaticField2 in #t6{core::int};
}
static method staticMethod() dynamic {
self::expect(null, self::Class::lateStaticField2Init);
self::expect(42, self::Class::lateStaticField2);
self::expect(42, self::Class::lateStaticField2Init);
}
method initLateInstanceField(core::int value) core::int {
return this.{self::Class::lateInstanceFieldInit} = value;
}
get lateInstanceField() core::int {
if(!this.{self::Class::_#Class#lateInstanceField#isSet}) {
final core::int #t7 = this.{self::Class::initLateInstanceField}(16);
if(this.{self::Class::_#Class#lateInstanceField#isSet})
throw new _in::LateError::fieldADI("lateInstanceField");
this.{self::Class::_#Class#lateInstanceField} = #t7;
this.{self::Class::_#Class#lateInstanceField#isSet} = true;
}
return let final core::int? #t8 = this.{self::Class::_#Class#lateInstanceField} in #t8{core::int};
}
method initLateGenericField(generic-covariant-impl self::Class::T% value) self::Class::T% {
return this.{self::Class::lateGenericFieldInit} = value;
}
get lateGenericField() self::Class::T% {
if(!this.{self::Class::_#Class#lateGenericField#isSet}) {
final self::Class::T% #t9 = this.{self::Class::initLateGenericField}(this.{self::Class::field});
if(this.{self::Class::_#Class#lateGenericField#isSet})
throw new _in::LateError::fieldADI("lateGenericField");
this.{self::Class::_#Class#lateGenericField} = #t9;
this.{self::Class::_#Class#lateGenericField#isSet} = true;
}
return let final self::Class::T? #t10 = this.{self::Class::_#Class#lateGenericField} in #t10{self::Class::T%};
}
method instanceMethod() dynamic {
self::expect(null, this.{self::Class::lateInstanceFieldInit});
self::expect(16, this.{self::Class::lateInstanceField});
self::expect(16, this.{self::Class::lateInstanceFieldInit});
self::expect(null, this.{self::Class::lateGenericFieldInit});
self::expect(this.{self::Class::field}, this.{self::Class::lateGenericField});
self::expect(this.{self::Class::field}, this.{self::Class::lateGenericFieldInit});
}
}
extension Extension<T extends core::Object? = dynamic> on self::Class<T%> {
static field lateExtensionField1Init = self::Extension|lateExtensionField1Init;
static method initLateExtensionField1 = self::Extension|initLateExtensionField1;
static field lateExtensionField1 = self::_#Extension|lateExtensionField1;
static field lateExtensionField1 = self::_#Extension|lateExtensionField1#isSet;
static get lateExtensionField1 = get self::Extension|lateExtensionField1;
static field lateExtensionField2Init = self::Extension|lateExtensionField2Init;
static method initLateExtensionField2 = self::Extension|initLateExtensionField2;
static field lateExtensionField2 = self::_#Extension|lateExtensionField2;
static field lateExtensionField2 = self::_#Extension|lateExtensionField2#isSet;
static get lateExtensionField2 = get self::Extension|lateExtensionField2;
static method staticMethod = self::Extension|staticMethod;
}
static field core::int? lateTopLevelField1Init;
static field core::int? _#lateTopLevelField1 = null;
static field core::bool _#lateTopLevelField1#isSet = false;
static field core::int? Extension|lateExtensionField1Init;
static field core::int? _#Extension|lateExtensionField1 = null;
static field core::bool _#Extension|lateExtensionField1#isSet = false;
static field core::int? Extension|lateExtensionField2Init;
static field core::int? _#Extension|lateExtensionField2 = null;
static field core::bool _#Extension|lateExtensionField2#isSet = false;
static method initLateTopLevelField1(core::int value) core::int {
return self::lateTopLevelField1Init = value;
}
static get lateTopLevelField1() core::int {
if(!self::_#lateTopLevelField1#isSet) {
final core::int #t11 = self::initLateTopLevelField1(123);
if(self::_#lateTopLevelField1#isSet)
throw new _in::LateError::fieldADI("lateTopLevelField1");
self::_#lateTopLevelField1 = #t11;
self::_#lateTopLevelField1#isSet = true;
}
return let final core::int? #t12 = self::_#lateTopLevelField1 in #t12{core::int};
}
static method Extension|initLateExtensionField1(core::int value) core::int {
return self::Extension|lateExtensionField1Init = value;
}
static get Extension|lateExtensionField1() core::int {
if(!self::_#Extension|lateExtensionField1#isSet) {
final core::int #t13 = self::Extension|initLateExtensionField1(87);
if(self::_#Extension|lateExtensionField1#isSet)
throw new _in::LateError::fieldADI("lateExtensionField1");
self::_#Extension|lateExtensionField1 = #t13;
self::_#Extension|lateExtensionField1#isSet = true;
}
return let final core::int? #t14 = self::_#Extension|lateExtensionField1 in #t14{core::int};
}
static method Extension|initLateExtensionField2(core::int value) core::int {
return self::Extension|lateExtensionField2Init = value;
}
static get Extension|lateExtensionField2() core::int {
if(!self::_#Extension|lateExtensionField2#isSet) {
final core::int #t15 = self::Extension|initLateExtensionField2(42);
if(self::_#Extension|lateExtensionField2#isSet)
throw new _in::LateError::fieldADI("lateExtensionField2");
self::_#Extension|lateExtensionField2 = #t15;
self::_#Extension|lateExtensionField2#isSet = true;
}
return let final core::int? #t16 = self::_#Extension|lateExtensionField2 in #t16{core::int};
}
static method Extension|staticMethod() dynamic {
self::expect(null, self::Extension|lateExtensionField2Init);
self::expect(42, self::Extension|lateExtensionField2);
self::expect(42, self::Extension|lateExtensionField2Init);
}
static method main() dynamic {
self::expect(null, self::lateTopLevelField1Init);
self::expect(123, self::lateTopLevelField1);
self::expect(123, self::lateTopLevelField1Init);
self::expect(null, self::Class::lateStaticField1Init);
self::expect(87, self::Class::lateStaticField1);
self::expect(87, self::Class::lateStaticField1Init);
self::Class::staticMethod();
new self::Class::•<core::int>(0).{self::Class::instanceMethod}();
self::expect(null, self::Extension|lateExtensionField1Init);
self::expect(87, self::Extension|lateExtensionField1);
self::expect(87, self::Extension|lateExtensionField1Init);
self::Extension|staticMethod();
self::expect(2, new self::C::•(1).{self::C::y});
}
static method expect(dynamic expected, dynamic actual) dynamic {
if(!expected.{core::Object::==}(actual))
throw "Expected ${expected}, actual ${actual}";
}