| OLD | NEW | 
|---|
| 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 } | 
| OLD | NEW | 
|---|