Index: pkg/kernel/testcases/closures/contexts_in_field_initializers.dart.expect |
diff --git a/pkg/kernel/testcases/closures/contexts_in_field_initializers.dart.expect b/pkg/kernel/testcases/closures/contexts_in_field_initializers.dart.expect |
index a7e1b28ebf9a9abab2d95310385f2125077a0105..145e647188f90bdfb3c49456805e39d5687c0330 100644 |
--- a/pkg/kernel/testcases/closures/contexts_in_field_initializers.dart.expect |
+++ b/pkg/kernel/testcases/closures/contexts_in_field_initializers.dart.expect |
@@ -12,6 +12,21 @@ class A extends core::Object { |
constructor •(self::X x) → void |
: self::A::x = x, super core::Object::•() {} |
} |
+class B extends core::Object { |
Dmitry Stefantsov
2017/08/16 13:15:00
As I understand it, the redirecting technique is n
sjindel
2017/08/16 13:28:56
It's technically not needed, but the analysis is n
Dmitry Stefantsov
2017/08/17 12:59:08
Ok. At the first glance, based on the CL descript
sjindel
2017/08/17 15:46:04
This CL is address the correct issue, not the inef
|
+ field self::X x; |
+ constructor •(self::X x) → void |
+ : final Vector #context = MakeVector(2), this self::B::#redir(x, #context) |
+ ; |
+ constructor #redir(self::X x, final Vector #context) → void |
+ : dynamic #t1 = #context[1] = x, self::B::x = #context[1], super core::Object::•() { |
+ final () → dynamic fn = MakeClosure<() → dynamic>(self::closure#B#function#fn, #context); |
+ fn.call(); |
+ } |
+} |
static method main() → dynamic { |
self::A a = new self::A::•(new self::X::•()); |
+ self::B b = new self::B::•(new self::X::•()); |
+} |
+static method closure#B#function#fn(Vector #contextParameter) → dynamic { |
+ core::print(#contextParameter[1]); |
} |