blob: a491f0cf7923ca9fb71139e66acfc14c2b700021 [file] [log] [blame]
library;
import self as self;
import "dart:core" as core;
abstract class C extends core::Object {
synthetic constructor •() self::C
: super core::Object::•()
;
abstract get _f1() core::int?;
abstract get _f2() core::int?;
abstract set _f2(synthesized core::int? #externalFieldValue) → void;
}
class D extends core::Object {
final field core::int? _f1;
final field core::int? _f2;
constructor •(core::int i) self::D
: self::D::_f1 = i, self::D::_f2 = i, super core::Object::•()
;
}
static method acceptsInt(core::int x) void {}
static method testAbstractFinalFieldIsPromotable(self::C c) void {
if(!(c.{self::C::_f1}{core::int?} == null)) {
core::int x = c.{self::C::_f1}{core::int?} as{Unchecked} core::int;
self::acceptsInt(x);
}
}
static method testAbstractNonFinalFieldIsNotPromotable(self::C c) void {
if(!(c.{self::C::_f2}{core::int?} == null)) {
core::int? x = c.{self::C::_f2}{core::int?};
x = null;
}
}
static method testAbstractFinalFieldDoesNotBlockPromotionElsewhere(self::D d) void {
if(!(d.{self::D::_f1}{core::int?} == null)) {
core::int x = d.{self::D::_f1}{core::int?} as{Unchecked} core::int;
self::acceptsInt(x);
}
}
static method testAbstractNonFinalFieldBlocksPromotionElsewhere(self::D d) void {
if(!(d.{self::D::_f2}{core::int?} == null)) {
core::int? x = d.{self::D::_f2}{core::int?};
x = null;
}
}
static method main() dynamic {}