logo

class

compiler::CurryResolver

sys::Obj
  compiler::CompilerSupport
    compiler::CurryResolver

CurryResolver handles the process of resolving a CurryExpr.

Slots

defineCurry

Void defineCurry()

Define a synthetic class called Curry$xx.

genSignature

Void genSignature()

Define the signature of the curries method which is any partial parameters left incomplete.

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.

reflection

Expr reflection()

Calling curry on a Func instance is just syntax sugar for calling Func.curry

resolve

Expr resolve()

Resolve into a method call or field access

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.