Index: pkg/kernel/testcases/closures/closure_types.dart.expect |
diff --git a/pkg/kernel/testcases/closures/closure_types.dart.expect b/pkg/kernel/testcases/closures/closure_types.dart.expect |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2e8dd4b8d2ff8eea2f58297a8a65a07bb72093d5 |
--- /dev/null |
+++ b/pkg/kernel/testcases/closures/closure_types.dart.expect |
@@ -0,0 +1,49 @@ |
+library; |
+import self as self; |
+import "dart:core" as core; |
+ |
+typedef ct = (core::int) → void; |
+typedef dt = (core::int) → core::String; |
+class C<T extends core::Object> extends core::Object { |
+ default constructor •() → void |
+ : super core::Object::•() |
+ ; |
+ method getf() → void { |
+ final (self::C::T) → self::C::T fn = MakeClosure<<T extends core::Object>(T) → T, self::C::T>(self::closure#C#getf#fn, MakeVector(1)); |
+ ; |
+ return fn; |
+ } |
+} |
+class D<T extends core::Object> extends core::Object { |
+ default constructor •() → void |
+ : super core::Object::•() |
+ ; |
+ method getf() → void { |
+ final (dynamic) → self::D::T fn = MakeClosure<<T extends core::Object>(dynamic) → T, self::D::T>(self::closure#D#getf#fn, MakeVector(1)); |
+ return fn; |
+ } |
+} |
+static method test_c() → void { |
+ dynamic x = new self::C::•<core::int>().getf(); |
+ assert(x is (core::int) → void); |
+ dynamic y = new self::C::•<core::String>().getf(); |
+ assert(!(y is (core::int) → void)); |
+} |
+static method test_d() → void { |
+ dynamic x = new self::D::•<core::String>().getf(); |
+ assert(x is (core::int) → core::String); |
+ dynamic y = new self::D::•<core::int>().getf(); |
+ assert(!(y is (core::int) → core::String)); |
+ dynamic z = new self::D::•<core::int>().getf(); |
+ assert(!(z is (core::int) → core::String)); |
+} |
+static method main() → dynamic { |
+ self::test_c(); |
+ self::test_d(); |
+} |
+static method closure#C#getf#fn<T extends core::Object>(dynamic #contextParameter, self::closure#C#getf#fn::T x) → self::closure#C#getf#fn::T { |
+ return x; |
+} |
+static method closure#D#getf#fn<T extends core::Object>(dynamic #contextParameter, dynamic y) → self::closure#D#getf#fn::T { |
+ return null; |
+} |