| class A<T> { |
| A(); |
| factory A.fact() => new A<T>(); |
| factory A.redirect() = A<T>; |
| } |
| |
| const A<int> Function() f1c = F.new; |
| const A<int> Function() f1f = F.fact; |
| const A<int> Function() f1i = F.redirect; |
| const A<int> Function() g1c = G.new; |
| const A<int> Function() h1c = H.new; |
| const f1a = A<int>.new; |
| const f1b = F<int>.new; |
| const f1d = A<int>.fact; |
| const f1e = F<int>.fact; |
| const f1g = A<int>.redirect; |
| const f1h = F<int>.redirect; |
| const g1a = A<int>.new; |
| const g1b = G<String>.new; |
| const h1a = A<int>.new; |
| const h1b = H<int, String>.new; |
| expect(expected, actual) {} |
| final bool inSoundMode = <int?>[] is! List<int>; |
| main() {} |
| test<T extends num>() {} |
| typedef F<X extends num> = A<X>; |
| typedef G<Y> = A<int>; |
| typedef H<X, Y> = A<X>; |