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