Fan

 

class

compiler::CurryResolver

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

CurryResolver handles the process of resolving a CurryExpr.

Slots

defineCurrySource

Void defineCurry()

Define a synthetic class called Curry$xx.

genSignatureSource

Void genSignature()

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

makeSource

new make(Compiler compiler, TypeDef curType, Int curryCount, CurryExpr expr)

Constructor

mapCurrySource

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.

reflectionSource

Expr reflection()

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

resolveSource

Expr resolve()

Resolve into a method call or field access

simpleStaticSource

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.