
class
compiler::InitClosures
sys::Obj compiler::CompilerSupport compiler::CompilerStep compiler::InitClosures
During the Parse step we created a list of all the closures. In InitClosures we map each ClosureExpr into a TypeDef as an anonymous class, then we map ClosureExpr.substitute to call the constructor anonymous class.
Slots
- closure
-
ClosureExpr closure
- cls
-
TypeDef cls
- ctor
-
MethodDef ctor
- doCall
-
MethodDef doCall
- enclosingMethod
-
MethodDef enclosingMethod
- enclosingType
-
TypeDef enclosingType
-
private Void genCall()
-
private Void genClass()
-
private Void genCtor()
-
private Void genDoCall()
-
private Void genIsImmutable()
-
static internal Void genIsImmutableMethod(Compiler compiler, Location loc, TypeDef parent, Bool literalVal)
- genMethodCall
-
static MethodDef genMethodCall(Compiler compiler, Location loc, TypeDef parent, FuncType signature, CallExpr c, Bool firstAsTarget)
This method overrides either call(List) or callx(A...) to push the args onto the stack, then redirect to the specified CallExpr c. We share this code for both closures and curries.
- loc
-
Location loc
- make
-
new make(Compiler compiler)
-
private Void process(ClosureExpr c)
- run
-
override Void run()
Run the step
-
private Void setup(ClosureExpr c)
- signature
-
FuncType signature
-
private Void substitute()