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