/* | |
* Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file | |
* for details. All rights reserved. Use of this source code is governed by a | |
* BSD-style license that can be found in the LICENSE file. | |
*/ | |
/** | |
* @assertion A type alias declares a name for a type expression. | |
* <typeAlias> ::=<metadata> typedef <typeIdentifier> <typeParameters>?‘=’<type> | |
* ‘;’ | |
* | <metadata> typedef <functionTypeAlias> | |
* <functionTypeAlias> ::= <functionPrefix> <formalParameterPart> ‘;’ | |
* <functionPrefix> ::= <type>? <identifier> | |
* @description Checks that it is a compile error if type alias has wrong number | |
* of type parameters with type parameters | |
* @author sgrekhov@unipro.ru | |
*/ | |
// SharedOptions=--enable-experiment=nonfunction-type-aliases | |
class A {} | |
class C<T1, T2> {} | |
typedef Alias1<T> = A<T>; //# 01: compile-time error | |
typedef Alias2 = A<int>; //# 02: compile-time error | |
typedef Alias3<T> = C<T>; //# 03: compile-time error | |
typedef Alias4<T1, T2, T3> = C<T1, T2, T3>; //# 04: compile-time error | |
typedef Alias5<T1, T2, T3> = C<int, String>; //# 05: compile-time error | |
typedef Alias6<T1, T2> = C<T1, T2, String>; //# 06: compile-time error | |
typedef Alias7<T1, T2> = C<T2 extends T1>; //# 07: compile-time error | |
main() { | |
} |