dart-sdk/tests/language/generic/instantiate_tearoff_of_call_test.dart
Robert Nystrom 2bf3259005 Migrate language_2/generic to NNBD.
Change-Id: I582fa00eb713282c3bd6fc1607efc0242ce9076f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/146686
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Auto-Submit: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
2020-05-13 01:00:35 +00:00

31 lines
949 B
Dart

// Copyright (c) 2017, 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.
import "package:expect/expect.dart";
T f<T>(T x) => x;
void test(T Function<T>(T) f) {
int Function(int) intFunc = f.call;
dynamic intFuncDynamic = intFunc;
Expect.isTrue(intFuncDynamic is int Function(int));
Expect.isFalse(intFuncDynamic is String Function(String));
Expect.equals(intFuncDynamic(1), 1);
Expect.throwsTypeError(() {
intFuncDynamic('oops');
});
String Function(String) stringFunc = f.call;
dynamic stringFuncDynamic = stringFunc;
Expect.isTrue(stringFuncDynamic is String Function(String));
Expect.isFalse(stringFuncDynamic is int Function(int));
Expect.equals(stringFuncDynamic('hello'), 'hello');
Expect.throwsTypeError(() {
stringFuncDynamic(1);
});
}
main() {
test(f);
}