| library /*isNonNullableByDefault*/; |
| import self as self; |
| import "dart:core" as core; |
| |
| import "package:expect/expect.dart"; |
| |
| abstract class A<T extends core::Object? = dynamic> extends core::Object { |
| static final field dynamic _redirecting# = <dynamic>[self::A::•]/*isLegacy*/; |
| constructor empty() → self::A<self::A::T%> |
| ; |
| static factory •<T extends core::Object? = dynamic>() → self::A<self::A::•::T%> |
| return self::B::•<self::A::•::T%, core::List<self::A::•::T%>>(); |
| } |
| abstract class B<U extends core::Object? = dynamic, W extends core::Object? = dynamic> extends self::A<self::B::U%> { |
| static final field dynamic _redirecting# = <dynamic>[self::B::•]/*isLegacy*/; |
| constructor empty() → self::B<self::B::U%, self::B::W%> |
| ; |
| static factory •<U extends core::Object? = dynamic, W extends core::Object? = dynamic>() → self::B<self::B::•::U%, self::B::•::W%> |
| return new self::C::•<self::B::•::U%, self::B::•::W%, core::Map<self::B::•::U%, self::B::•::W%>>(); |
| } |
| class C<V extends core::Object? = dynamic, S extends core::Object? = dynamic, R extends core::Object? = dynamic> extends self::B<self::C::V%, self::C::S%> { |
| constructor •() → self::C<self::C::V%, self::C::S%, self::C::R%> |
| ; |
| method toString() → core::String |
| ; |
| } |
| static method main() → dynamic |
| ; |
| |
| |
| Extra constant evaluation status: |
| Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirection_chain_type_arguments_subst.dart:11:16 -> ConstructorTearOffConstant(A.) |
| Evaluated: ConstructorTearOff @ org-dartlang-testcase:///redirection_chain_type_arguments_subst.dart:16:16 -> ConstructorTearOffConstant(B.) |
| Extra constant evaluation: evaluated: 6, effectively constant: 2 |