
CurryResolver handles the process of resolving a CurryExpr.
Slots
-
private CallExpr call
-
private MethodDef ctor
-
private TypeDef curType
-
private TypeDef curry
-
private Int curryCount
- defineCurry
-
Void defineCurry()
Define a synthetic class called Curry$xx.
-
private CurryExpr expr
- genSignature
-
Void genSignature()
Define the signature of the curries method which is any partial parameters left incomplete.
-
private Location loc
- make
-
new make(Compiler compiler, TypeDef curType, Int curryCount, CurryExpr expr)
Constructor
- mapCurry
-
Expr mapCurry()
For each argument specified we need to pass to the constructor and stash away and in a field for use in redirecting to the target method.
-
private CMethod method
- resolve
-
Expr resolve()
Resolve into a method call or field access
-
private FuncType sig
- simpleStatic
-
Expr simpleStatic()
If the curry is a static method with no arguments, then really it isn't a curry per se, because we can optimize to just a method lookup.
-
private Bool thisIsParam