blob: 846385d5b5d6444fd6af1ea26c81c7db82d76444 [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);
}