| library test /*isNonNullableByDefault*/; |
| import self as self; |
| import "dart:core" as core; |
| |
| class B extends core::Object { |
| field core::Object? _x = null; |
| synthetic constructor •() → self::B |
| : super core::Object::•() |
| ; |
| method f([core::num x = #C1]) → void { |
| this.{self::B::_x} = x; |
| } |
| method g({core::num x = #C2}) → void { |
| this.{self::B::_x} = x; |
| } |
| method check(core::Object expectedValue) → void { |
| if(!(this.{self::B::_x}{core::Object?} =={core::Object::==}{(core::Object) → core::bool} expectedValue)) { |
| throw "Expected _x == ${expectedValue}; got ${this.{self::B::_x}{core::Object?}}"; |
| } |
| } |
| } |
| abstract class I<T extends core::Object? = dynamic> extends core::Object { |
| synthetic constructor •() → self::I<self::I::T%> |
| : super core::Object::•() |
| ; |
| abstract method f([covariant-by-class self::I::T% x = #C3]) → void; |
| abstract method g({covariant-by-class self::I::T% x = #C3}) → void; |
| } |
| class C extends self::B implements self::I<core::num> { |
| synthetic constructor •() → self::C |
| : super self::B::•() |
| ; |
| forwarding-stub method f([covariant-by-class core::num x = #C1]) → void |
| return super.{self::B::f}(x); |
| forwarding-stub method g({covariant-by-class core::num x = #C2}) → void |
| return super.{self::B::g}(x: x); |
| } |
| static method main() → dynamic { |
| self::C c = new self::C::•(); |
| c.{self::C::f}(){([core::num]) → void}; |
| c.{self::B::check}(10){(core::Object) → void}; |
| c.{self::C::g}(){({x: core::num}) → void}; |
| c.{self::B::check}(20){(core::Object) → void}; |
| } |
| |
| constants { |
| #C1 = 10 |
| #C2 = 20 |
| #C3 = null |
| } |