public class MethodExpression extends Expression
Modifier and Type | Field | Description |
---|---|---|
static Method |
setTriggeringMethod |
Constructor | Description |
---|---|
MethodExpression(Rule rule,
Type type,
ParseNode token,
Expression recipient,
List<Expression> arguments,
String[] pathList) |
Modifier and Type | Method | Description |
---|---|---|
Method |
bestMatchCandidate(List<Method> candidates,
Type expected) |
return the method whose signature is the best fit for the call argument types.
|
void |
bind() |
verify that variables mentioned in this expression are actually available in the supplied
bindings list and infer/validate the type of this expression or its subexpressions
where possible
|
void |
compile(org.objectweb.asm.MethodVisitor mv,
CompileContext compileContext) |
|
Class |
getCandidateArgClass(List<Method> candidates,
int argIdx) |
|
String |
getPath(int len) |
|
int |
getPathCount(String name) |
|
Object |
interpret(HelperAdapter helper) |
evaluate the expression by interpreting the expression tree
|
List<Method> |
pruneCandidates(List<Method> candidates,
int argIdx,
Class argClazz) |
prune the candidates list removing all methods whose parameter at index argIdx cannot be assigned to
class argClazz
|
Type |
typeCheck(Type expected) |
ensure that all type references in the expression and its component expressions
can be resolved, that the type of the expression is well-defined and that it is
compatible with the type expected in the context in which it occurs.
|
void |
writeTo(StringWriter stringWriter) |
getPos, getType
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getBindings, getTypeGroup, rebox, toString
public static Method setTriggeringMethod
public MethodExpression(Rule rule, Type type, ParseNode token, Expression recipient, List<Expression> arguments, String[] pathList)
public void bind() throws TypeException
bind
in class Expression
TypeException
- if any variable is missing or has the wrong typepublic Type typeCheck(Type expected) throws TypeException
Expression
typeCheck
in class Expression
expected
- the type expected for the expression in the contxet in which it occurs. this
may be void but should not be undefined at the point where type checking is performed.TypeException
- if a type check failure occurspublic Object interpret(HelperAdapter helper) throws ExecuteException
Expression
interpret
in class Expression
helper
- an execution context associated with the rule which contains a map of
current bindings for rule variables and another map of their declared types both of which
are indexed by variable name. This includes entries for the helper (name "-1"), the
recipient if the trigger method is not static (name "0") and the trigger method arguments
(names "1", ...)ExecuteException
- if an error occurs during executionpublic void compile(org.objectweb.asm.MethodVisitor mv, CompileContext compileContext) throws CompileException
compile
in class RuleElement
CompileException
public List<Method> pruneCandidates(List<Method> candidates, int argIdx, Class argClazz)
candidates
- candidate matching methodsargIdx
- index of arg curently being checkedargClazz
- class of arg curently being checkedpublic Method bestMatchCandidate(List<Method> candidates, Type expected)
candidates
- a list of methods all of whose signatures are assignable from theexpected
- an expected type which may or may not constrain the method return typepublic String getPath(int len)
public int getPathCount(String name)
public void writeTo(StringWriter stringWriter)
writeTo
in class Expression
Copyright © 2018. All rights reserved.