blob: a5e76efd3e58e71d4e0f196914e68e12676eda88 [file] [log] [blame]
// 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 type alias syntax works as expected. Test
/// function type alias with type parameters
/// @author sgrekhov@unipro.ru
import "../../../Utils/expect.dart";
typedef void F1<T>(String s);
typedef F2<T>(String s, T i);
typedef F3<T extends num>(String s, T i);
test1(F2<int> f2) {
f2("Lily was here", 42);
}
test2(F3<double> f3) {
f3("Lily was here", 3.14);
}
main() {
F1<int> f = (String s) {
Expect.equals("123", s);
};
f("123");
f2(String s, int i) {
Expect.equals("Lily was here", s);
Expect.equals(42, i);
}
F3<double> f3 = (String s, double d) {
Expect.equals("Lily was here", s);
Expect.equals(3.14, d);
};
test1(f2);
test2(f3);
}