Index: pkg/kernel/testcases/closures/closure_types.dart |
diff --git a/pkg/kernel/testcases/closures/closure_types.dart b/pkg/kernel/testcases/closures/closure_types.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c854593929f3d3de9b331ce0b30a54538bdb485e |
--- /dev/null |
+++ b/pkg/kernel/testcases/closures/closure_types.dart |
@@ -0,0 +1,48 @@ |
+class C<T> { |
Dmitry Stefantsov
2017/08/28 11:38:15
Please add a standard preamble and a description.
sjindel
2017/08/28 15:05:59
Done.
|
+ void getf() { |
+ T fn(T x) { |
+ return x; |
+ } |
+ |
+ ; |
+ return fn; |
+ } |
+} |
+ |
+typedef void ct(int x); |
+ |
+void test_c() { |
+ var x = new C<int>().getf(); |
+ assert(x is ct); |
+ |
+ var y = new C<String>().getf(); |
+ assert(y is! ct); |
+} |
+ |
+class D<T> { |
+ void getf<S>() { |
+ T fn(S y) { |
+ return null; |
+ } |
+ |
+ return fn; |
+ } |
+} |
+ |
+typedef String dt(int x); |
+ |
+void test_d() { |
+ var x = new D<String>().getf<int>(); |
+ assert(x is dt); |
+ |
+ var y = new D<int>().getf<int>(); |
+ assert(y is! dt); |
+ |
+ var z = new D<int>().getf<String>(); |
+ assert(z is! dt); |
+} |
+ |
+main() { |
+ test_c(); |
+ test_d(); |
+} |