| library /*isNonNullableByDefault*/; |
| import self as self; |
| import "dart:core" as core; |
| import "package:expect/expect.dart" as exp; |
| |
| import "package:expect/expect.dart"; |
| |
| class A extends core::Object { |
| static final field dynamic _redirecting# = <dynamic>[#C1]/*isLegacy*/; |
| constructor •() → self::A |
| : super core::Object::•() {} |
| static factory foo() → self::A |
| return self::C::bar(); |
| method m() → core::int { |
| return 1; |
| } |
| } |
| class C extends self::A { |
| static final field dynamic _redirecting# = <dynamic>[#C2]/*isLegacy*/; |
| constructor •() → self::C |
| : super self::A::•() {} |
| static factory bar() → self::C |
| return new self::D::•(); |
| method m() → core::int { |
| return 1; |
| } |
| } |
| class D extends self::C { |
| synthetic constructor •() → self::D |
| : super self::C::•() |
| ; |
| method m() → core::int { |
| return 2; |
| } |
| } |
| static method main() → dynamic { |
| self::A a = new self::D::•(); |
| exp::Expect::equals(2, a.{self::A::m}(){() → core::int}); |
| } |
| |
| constants { |
| #C1 = constructor-tearoff self::A::foo |
| #C2 = constructor-tearoff self::C::bar |
| } |