blob: e4f719d052651c9e1184c99112f97f61355d80c4 [file] [log] [blame]
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "dart:_internal" as _in;
class Class extends core::Object {
field core::int? _#Class#field1 = null;
field core::int? _#Class#field2 = null;
field core::int? _#Class#field3 = null;
field core::int? _#Class#field4 = null;
synthetic constructor •() self::Class
: super core::Object::•()
;
get field1() core::int
return let final core::int? #t1 = this.{self::Class::_#Class#field1}{core::int?} in #t1 == null ?{core::int} throw new _in::LateError::fieldNI("field1") : #t1{core::int};
set field1(core::int field1#param) → void
this.{self::Class::_#Class#field1} = field1#param;
get field2() core::int
return let final core::int? #t2 = this.{self::Class::_#Class#field2}{core::int?} in #t2 == null ?{core::int} throw new _in::LateError::fieldNI("field2") : #t2{core::int};
set field2(core::int field2#param) → void
this.{self::Class::_#Class#field2} = field2#param;
get field3() core::int
return let final core::int? #t3 = this.{self::Class::_#Class#field3}{core::int?} in #t3 == null ?{core::int} throw new _in::LateError::fieldNI("field3") : #t3{core::int};
set field3(core::int field3#param) → void
if(this.{self::Class::_#Class#field3}{core::int?} == null)
this.{self::Class::_#Class#field3} = field3#param;
else
throw new _in::LateError::fieldAI("field3");
get field4() core::int
return let final core::int? #t4 = this.{self::Class::_#Class#field4}{core::int?} in #t4 == null ?{core::int} throw new _in::LateError::fieldNI("field4") : #t4{core::int};
set field4(core::int field4#param) → void
if(this.{self::Class::_#Class#field4}{core::int?} == null)
this.{self::Class::_#Class#field4} = field4#param;
else
throw new _in::LateError::fieldAI("field4");
}
class SubClass extends self::Class {
field core::int? _#SubClass#field1 = null;
field core::int? _#SubClass#field2 = null;
field core::int? _#SubClass#field3 = null;
field core::int? _#SubClass#field4 = null;
synthetic constructor •() self::SubClass
: super self::Class::•()
;
get field1() core::int
return let final core::int? #t5 = this.{self::SubClass::_#SubClass#field1}{core::int?} in #t5 == null ?{core::int} throw new _in::LateError::fieldNI("field1") : #t5{core::int};
set field1(core::int field1#param) → void
this.{self::SubClass::_#SubClass#field1} = field1#param;
get field2() core::int
return let final core::int? #t6 = this.{self::SubClass::_#SubClass#field2}{core::int?} in #t6 == null ?{core::int} this.{self::SubClass::_#SubClass#field2} = 0 : #t6{core::int};
set field2(core::int field2#param) → void
this.{self::SubClass::_#SubClass#field2} = field2#param;
get field3() core::int
return let final core::int? #t7 = this.{self::SubClass::_#SubClass#field3}{core::int?} in #t7 == null ?{core::int} throw new _in::LateError::fieldNI("field3") : #t7{core::int};
set field3(core::int field3#param) → void
if(this.{self::SubClass::_#SubClass#field3}{core::int?} == null)
this.{self::SubClass::_#SubClass#field3} = field3#param;
else
throw new _in::LateError::fieldAI("field3");
get field4() core::int
return let final core::int? #t8 = this.{self::SubClass::_#SubClass#field4}{core::int?} in #t8 == null ?{core::int} let final core::int #t9 = 0 in this.{self::SubClass::_#SubClass#field4}{core::int?} == null ?{core::int} this.{self::SubClass::_#SubClass#field4} = #t9 : throw new _in::LateError::fieldADI("field4") : #t8{core::int};
get directField1() core::int
return super.{self::Class::field1};
set directField1(core::int value) void {
super.{self::Class::field1} = value;
}
get directField2() core::int
return super.{self::Class::field2};
set directField2(core::int value) void {
super.{self::Class::field2} = value;
}
get directField3() core::int
return super.{self::Class::field3};
get directField4() core::int
return super.{self::Class::field4};
}
static method main() dynamic {
self::SubClass sc = new self::SubClass::•();
self::Class c = sc;
self::throws(() core::int => c.{self::Class::field1}{core::int}, "Read value from uninitialized SubClass.field1");
self::throws(() core::int => sc.{self::SubClass::directField1}{core::int}, "Read value from uninitialized Class.field1");
self::expect(42, c.{self::Class::field1} = 42);
self::expect(42, c.{self::Class::field1}{core::int});
self::throws(() core::int => sc.{self::SubClass::directField1}{core::int}, "Read value from uninitialized Class.field1");
self::expect(87, sc.{self::SubClass::directField1} = 87);
self::expect(87, sc.{self::SubClass::directField1}{core::int});
self::expect(0, c.{self::Class::field2}{core::int});
self::throws(() core::int => sc.{self::SubClass::directField2}{core::int}, "Read value from uninitialized Class.field2");
self::expect(42, c.{self::Class::field2} = 42);
self::expect(42, c.{self::Class::field2}{core::int});
self::throws(() core::int => sc.{self::SubClass::directField2}{core::int}, "Read value from uninitialized Class.field2");
self::expect(87, sc.{self::SubClass::directField2} = 87);
self::expect(87, sc.{self::SubClass::directField2}{core::int});
self::throws(() core::int => c.{self::Class::field3}{core::int}, "Read value from uninitialized SubClass.field3");
self::throws(() core::int => sc.{self::SubClass::directField3}{core::int}, "Read value from uninitialized Class.field3");
self::expect(42, c.{self::Class::field3} = 42);
self::expect(42, c.{self::Class::field3}{core::int});
self::throws(() core::int => sc.{self::SubClass::directField3}{core::int}, "Read value from uninitialized Class.field3");
self::throws(() core::int => c.{self::Class::field3} = 87, "Write value to initialized SubClass.field3");
self::expect(0, c.{self::Class::field4}{core::int});
self::throws(() core::int => sc.{self::SubClass::directField4}{core::int}, "Read value from uninitialized Class.field4");
self::expect(42, c.{self::Class::field4} = 42);
self::expect(0, c.{self::Class::field4}{core::int});
self::expect(42, sc.{self::SubClass::directField4}{core::int});
self::throws(() core::int => c.{self::Class::field4} = 87, "Write value to initialized SubClass.field4");
}
static method expect(dynamic expected, dynamic actual) dynamic {
if(!(expected =={core::Object::==}{(core::Object) core::bool} actual))
throw "Expected ${expected}, actual ${actual}.";
}
static method throws(() dynamic f, core::String message) dynamic {
dynamic value;
try {
value = f(){() dynamic};
}
on core::Error catch(final core::Error e) {
core::print(e);
return;
}
throw "${message}: ${value}";
}
Extra constant evaluation status:
Evaluated: VariableGet @ org-dartlang-testcase:///override.dart:16:18 -> IntConstant(0)
Extra constant evaluation: evaluated: 232, effectively constant: 1