class compiler::CallResolver
sys::Obj compiler::CompilerSupport compiler::CallResolver
CallResolver handles the process of resolving a CallExpr or UnknownVarExpr to a method call or a field access.
- args
-
Expr[] args - base
-
CType? base - baseIt
-
CType? baseIt - curMethod
-
MethodDef? curMethod - curType
-
TypeDef? curType - expr
-
NameExpr expr - find
-
Void find()Find the method or field with the specified name.
- found
-
CSlot? found - foundOnIt
-
Bool foundOnIt - inferClosureTypeFromCall
-
static Expr inferClosureTypeFromCall(CompilerSupport support, CallExpr call, CType base)If the last argument to the resolved call is a closure, then use the method to infer the function type. If the last arg is a closure, but the call doesn't take a closure, then translate into an implicit call to Obj.with
- isFuncFieldCall
-
Bool isFuncFieldCall - isItAdd
-
Bool isItAdd - isStaticLiteral
-
Bool isStaticLiteral()If this is a standalone name without a base target such as "Foo" and the name maps to a type name, then this is a type literal.
- isVar
-
Bool isVar - loc
-
Loc loc - make
-
new make(Compiler compiler, TypeDef? curType, MethodDef? curMethod, NameExpr expr)Construct with NameExpr (base class of CallExpr and UnknownVarExpr)
- name
-
Str name - resolve
-
Expr resolve()Resolve into a method call or field access
- resolveBase
-
Void resolveBase()Resolve the base type which defines the slot we are calling.
- result
-
Expr? result - target
-
Expr? target