Index: tests/language/generic_method_types_test.dart |
diff --git a/tests/language/generic_method_types_test.dart b/tests/language/generic_method_types_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4db4ba2636d63914f03ae03c7d2aa15ebb7461e8 |
--- /dev/null |
+++ b/tests/language/generic_method_types_test.dart |
@@ -0,0 +1,50 @@ |
+// Copyright (c) 2016, 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'; |
+ |
+typedef O Convert<I, O>(I input); |
+typedef Other(a, b); |
+ |
+class Mixin<E> { |
+ E convert1<I>(I input) => null; |
+} |
+ |
+class Class<F> extends Object with Mixin<F> { |
+ O convert2<O>(F input) => null; |
+} |
+ |
+O convert<I, O>(I input) => null; |
+ |
+test1() { |
+ var val = new Class<String>(); |
+ Expect.isTrue(val.convert1 is Convert); |
+ Expect.isTrue(val.convert1 is Convert<String, String>); |
+ Expect.isTrue(val.convert1 is Convert<int, String>); |
+ Expect.isFalse(val.convert1 is Convert<String, int>); |
+ Expect.isFalse(val.convert1 is Other); |
+} |
+ |
+test2() { |
+ var val = new Class<String>(); |
+ Expect.isTrue(val.convert2 is Convert); |
+ Expect.isTrue(val.convert2 is Convert<String, String>); |
+ Expect.isTrue(val.convert2 is Convert<String, int>); |
+ Expect.isFalse(val.convert2 is Convert<int, String>); |
+ Expect.isFalse(val.convert2 is Other); |
+} |
+ |
+test3() { |
+ Expect.isTrue(convert is Convert); |
+ Expect.isTrue(convert is Convert<String, String>); |
+ Expect.isTrue(convert is Convert<String, int>); |
+ Expect.isTrue(convert is Convert<int, String>); |
+ Expect.isFalse(convert is Other); |
+} |
+ |
+main() { |
+ test1(); /// 01: ok |
+ test2(); /// 02: ok |
+ test3(); /// 03: ok |
+} |