Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(196)

Unified Diff: tests/language/void_type3_test.dart

Issue 2699073003: Support `void` as generic argument.
Patch Set: Shuffle things around to have a better `voidRti` locality. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tests/language/void_type2_test.dart ('k') | tests/language/void_type4_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/language/void_type3_test.dart
diff --git a/tests/language/void_type3_test.dart b/tests/language/void_type3_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..063f539de9058929d5973c53f80f2a6d3e18f2c6
--- /dev/null
+++ b/tests/language/void_type3_test.dart
@@ -0,0 +1,121 @@
+// 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.
+
+// Dart test for type checks involving the void type.
+
+import 'package:expect/expect.dart';
+
+typedef F = void Function(Object);
+typedef F2 = void Function([Object]);
+typedef F3 = void Function({Object x});
+
+typedef G = void Function(void);
+typedef G2 = void Function([void]);
+typedef G3 = void Function({void x});
+
+typedef H = int Function(void);
+typedef H2 = int Function([void]);
+typedef H3 = int Function({void x});
+
+void f(Object x) {}
+void f2([Object x]) {}
+void f3({Object x}) {}
+
+void g(void x) {}
+void g2([void x]) {}
+void g3({void x}) {}
+
+int h(void x) => 499;
+int h2([void x]) => 499;
+int h3({void x}) => 499;
+
+void expectsF(F f) {}
+void expectsG(G g) {}
+void expectsH(H h) {}
+
+void expectsF2(F2 f) {}
+void expectsG2(G2 g) {}
+void expectsH2(H2 h) {}
+
+void expectsF3(F3 f) {}
+void expectsG3(G3 g) {}
+void expectsH3(H3 h) {}
+
+void throwsInChecked(f) {
+ bool checkedMode = false;
+ assert((checkedMode = true));
+
+ bool caughtError = false;
+ try {
+ f();
+ } catch(e) {
+ caughtError = true;
+ }
+ Expect.equals(checkedMode, caughtError);
+}
+
+main() {
+ Expect.isTrue(f is F);
+ Expect.isTrue(f is G);
+ Expect.isFalse(f is H);
+ expectsF(f);
+ expectsG(f);
+ throwsInChecked(() { expectsH(f); }); /// 00: static type warning
+
+ Expect.isTrue(f2 is F2);
+ Expect.isTrue(f2 is G2);
+ Expect.isFalse(f2 is H2);
+ expectsF2(f2);
+ expectsG2(f2);
+ throwsInChecked(() { expectsH2(f2); }); /// 01: static type warning
+
+ Expect.isTrue(f3 is F3);
+ Expect.isTrue(f3 is G3);
+ Expect.isFalse(f3 is H3);
+ expectsF3(f3);
+ expectsG3(f3);
+ throwsInChecked(() { expectsH3(f3); }); /// 03: static type warning
+
+ Expect.isTrue(g is F);
+ Expect.isTrue(g is G);
+ Expect.isFalse(g is H);
+ expectsF(g); /// 04: static type warning
+ expectsG(g);
+ throwsInChecked(() { expectsH(g); }); /// 05: static type warning
+
+ Expect.isTrue(g2 is F2);
+ Expect.isTrue(g2 is G2);
+ Expect.isFalse(g2 is H2);
+ expectsF2(g2); /// 06: static type warning
+ expectsG2(g2);
+ throwsInChecked(() { expectsH2(g2); }); /// 07: static type warning
+
+ Expect.isTrue(g3 is F3);
+ Expect.isTrue(g3 is G3);
+ Expect.isFalse(g3 is H3);
+ expectsF3(g3); /// 08: static type warning
+ expectsG3(g3);
+ throwsInChecked(() { expectsH3(g3); }); /// 09: static type warning
+
+ Expect.isTrue(h is F);
+ Expect.isTrue(h is G);
+ Expect.isTrue(h is H);
+ expectsF(h);
+ expectsG(h);
+ expectsH(h);
+
+ Expect.isTrue(h2 is H2);
+ Expect.isTrue(h2 is G2);
+ Expect.isTrue(h2 is H2);
+ expectsF2(h2);
+ expectsG2(h2);
+ expectsH2(h2);
+
+ Expect.isTrue(h3 is H3);
+ Expect.isTrue(h3 is G3);
+ Expect.isTrue(h3 is H3);
+ expectsF3(h3);
+ expectsG3(h3);
+ expectsH3(h3);
+}
« no previous file with comments | « tests/language/void_type2_test.dart ('k') | tests/language/void_type4_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698