| class Class<T> {} |
| |
| class Class1 { |
| Class1( |
| F t1, |
| F<dynamic> t2, |
| F<Class> t3, |
| F<Class<dynamic>> t4, |
| F<ConcreteClass> t5, |
| F<Class<ConcreteClass>> t6, |
| F<Object> t7, |
| F<int> t8, { |
| required G s1, |
| required G<dynamic> s2, |
| required G<Class> s3, |
| required G<Class<dynamic>> s4, |
| required G<ConcreteClass> s5, |
| required G<Class<ConcreteClass>> s6, |
| required G<Object> s7, |
| required G<int> s8, |
| }); |
| void method2( |
| F t1, |
| F<dynamic> t2, |
| F<Class> t3, |
| F<Class<dynamic>> t4, |
| F<ConcreteClass> t5, |
| F<Class<ConcreteClass>> t6, |
| F<Object> t7, |
| F<int> t8, { |
| required G s1, |
| required G<dynamic> s2, |
| required G<Class> s3, |
| required G<Class<dynamic>> s4, |
| required G<ConcreteClass> s5, |
| required G<Class<ConcreteClass>> s6, |
| required G<Object> s7, |
| required G<int> s8, |
| }) {} |
| } |
| |
| class ConcreteClass implements Class<ConcreteClass> {} |
| |
| class G<X extends Class<X>> {} |
| |
| extension Extension1 on int { |
| void method3( |
| F t1, |
| F<dynamic> t2, |
| F<Class> t3, |
| F<Class<dynamic>> t4, |
| F<ConcreteClass> t5, |
| F<Class<ConcreteClass>> t6, |
| F<Object> t7, |
| F<int> t8, { |
| required G s1, |
| required G<dynamic> s2, |
| required G<Class> s3, |
| required G<Class<dynamic>> s4, |
| required G<ConcreteClass> s5, |
| required G<Class<ConcreteClass>> s6, |
| required G<Object> s7, |
| required G<int> s8, |
| }) {} |
| } |
| |
| main() {} |
| typedef F<X extends Class<X>> = X; |
| void method1( |
| F t1, |
| F<dynamic> t2, |
| F<Class> t3, |
| F<Class<dynamic>> t4, |
| F<ConcreteClass> t5, |
| F<Class<ConcreteClass>> t6, |
| F<Object> t7, |
| F<int> t8, { |
| required G s1, |
| required G<dynamic> s2, |
| required G<Class> s3, |
| required G<Class<dynamic>> s4, |
| required G<ConcreteClass> s5, |
| required G<Class<ConcreteClass>> s6, |
| required G<Object> s7, |
| required G<int> s8, |
| }) {} |