Chromium Code Reviews| 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).
|
| +} |