Index: tests/language/generic_function_type_test.dart |
diff --git a/tests/language/generic_function_type_test.dart b/tests/language/generic_function_type_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b58c9a46ccad17cb0587217cb4077a5779d71090 |
--- /dev/null |
+++ b/tests/language/generic_function_type_test.dart |
@@ -0,0 +1,37 @@ |
+// Copyright (c) 2012, 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. |
+// Dart test for a function type test that cannot be eliminated at compile time. |
+ |
+import "package:expect/expect.dart"; |
+ |
+isCheckedMode() { |
+ try { |
Siggi Cherem (dart-lang)
2016/12/29 22:46:58
should we add this to package:expect? I've seen it
floitsch
2016/12/30 14:55:48
Actually that file is an exact copy of `function_t
|
+ var i = 1; |
+ String s = i; |
+ return false; |
+ } catch (e) { |
+ return true; |
+ } |
+} |
+ |
+typedef FList(List l); |
+typedef FListInt(List<int> l); |
+ |
+FList f() { |
+ return (List<String> l) => null; // Type of function is a subtype of FList. |
+} |
+ |
+main() { |
+ bool got_type_error = false; |
+ try { |
+ // Static result type of f(), i.e. FList, is a subtype of FListInt. |
+ // However, run time type of returned function is not a subtype of FListInt. |
+ // Run time type check should not be eliminated. |
+ FListInt fli = f(); |
+ } on TypeError catch (error) { |
+ got_type_error = true; |
+ } |
+ // Type error expected in checked mode only. |
+ Expect.isTrue(got_type_error == isCheckedMode()); |
Siggi Cherem (dart-lang)
2016/12/29 22:46:58
is it important to make the check with check mode,
floitsch
2016/12/30 14:55:48
obsolete comment (since I deleted that file).
|
+} |