blob: 665a2718016cf386cbec479294c8489a6f87b79f [file] [log] [blame]
// 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);
}