Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(467)

Side by Side Diff: pkg/kernel/testcases/closures/closure_in_initializer.dart.expect

Issue 2778223002: Add primitive to create closures and use it for closure conversion (Closed)
Patch Set: Follow common pattern for AST nodes with References in ClosureCreation Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 library; 1 library;
2 import self as self; 2 import self as self;
3 import "dart:core" as core; 3 import "dart:core" as core;
4 4
5 class C extends core::Object { 5 class C extends core::Object {
6 field dynamic t; 6 field dynamic t;
7 constructor foo(dynamic f) → void 7 constructor foo(dynamic f) → void
8 : self::C::t = let final Vector #context = MakeVector(2) in let dynamic #t1 = #context[1] = f in new self::Closure#C#foo#function::•(#context), super core:: Object::•() { 8 : self::C::t = let final Vector #context = MakeVector(2) in let dynamic #t1 = #context[1] = f in MakeClosure<() → dynamic>(self::closure#C#foo#function, #co ntext), super core::Object::•() {
9 final Vector #context = MakeVector(2); 9 final Vector #context = MakeVector(2);
10 #context[1] = f; 10 #context[1] = f;
11 core::print(1); 11 core::print(1);
12 } 12 }
13 } 13 }
14 class Closure#C#foo#function extends core::Object implements core::Function {
15 field core::String note = "This is temporary. The VM doesn't need closure clas ses.";
16 field Vector context;
17 constructor •(final Vector context) → dynamic
18 : self::Closure#C#foo#function::context = context
19 ;
20 method call() → dynamic {
21 "This is a temporary solution. In the VM, this will become an additional par ameter.";
22 final Vector #contextParameter = this.{self::Closure#C#foo#function::context };
23 return (#contextParameter[1]).call();
24 }
25 }
26 class Closure#main#function extends core::Object implements core::Function {
27 field core::String note = "This is temporary. The VM doesn't need closure clas ses.";
28 field Vector context;
29 constructor •(final Vector context) → dynamic
30 : self::Closure#main#function::context = context
31 ;
32 method call() → dynamic {
33 "This is a temporary solution. In the VM, this will become an additional par ameter.";
34 final Vector #contextParameter = this.{self::Closure#main#function::context} ;
35 return core::print("hest");
36 }
37 }
38 static method main() → dynamic { 14 static method main() → dynamic {
39 core::print(0); 15 core::print(0);
40 dynamic c = new self::C::foo(new self::Closure#main#function::•(null)); 16 dynamic c = new self::C::foo(MakeClosure<() → dynamic>(self::closure#main#func tion, null));
41 core::print(2); 17 core::print(2);
42 c.t(); 18 c.t();
43 core::print(3); 19 core::print(3);
44 } 20 }
21 static method closure#C#foo#function(Vector #contextParameter) → dynamic {
22 return (#contextParameter[1]).call();
23 }
24 static method closure#main#function(Vector #contextParameter) → dynamic {
25 return core::print("hest");
26 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698