public abstract class MethodProc extends ProcedureN
| Modifier and Type | Field and Description |
|---|---|
protected java.lang.Object |
argTypes
The parameter types.
|
static int |
NO_MATCH
Return code from match: Unspecified failure.
|
static int |
NO_MATCH_AMBIGUOUS
Return code from match: Ambigious which method to select.
|
static int |
NO_MATCH_BAD_TYPE
Return code from match: Invalid argument type.
|
static int |
NO_MATCH_TOO_FEW_ARGS
Return code from match: Too few actual arguments.
|
static int |
NO_MATCH_TOO_MANY_ARGS
Return code from match: Too many actual arguments.
|
noArgscompilerKey, compilerXKey, validateApplyKey, validateXApplyKeynameKey| Constructor and Description |
|---|
MethodProc() |
| Modifier and Type | Method and Description |
|---|---|
java.lang.Object |
applyN(java.lang.Object[] args) |
Type |
getParameterType(int index) |
int |
isApplicable(Type[] argTypes,
Type restType)
Test if method is applicable to an invocation with given arguments.
|
static java.lang.RuntimeException |
matchFailAsException(int code,
Procedure proc,
java.lang.Object[] args)
Helper method to throw an exception if a
matchX
method fails. |
static MethodProc |
mostSpecific(MethodProc proc1,
MethodProc proc2)
Return the more specific of the arguments.
|
int |
numParameters()
Return number of parameters, including optional and rest arguments.
|
static boolean |
overrideEquivalent(MethodProc proc1,
MethodProc proc2)
An approximation of "override-equivalent" as defined in the JLS.
|
protected void |
resolveParameterTypes()
Figure out or decode the parameter types, setting argTypes.
|
apply, apply, check0, check1, check2, check3, check4, checkArgCount, checkN, getReturnType, getSetter, getSourceLocation, isSideEffectFree, match0, match1, match2, match3, match4, matchN, maxArgs, maxArgs, minArgs, minArgs, numArgs, set0, set1, setN, setSetter, setSourceLocation, toStringgetName, getProperty, getSymbol, removeProperty, setName, setProperty, setProperty, setSymbolprotected java.lang.Object argTypes
public static final int NO_MATCH
public static final int NO_MATCH_TOO_FEW_ARGS
public static final int NO_MATCH_TOO_MANY_ARGS
public static final int NO_MATCH_AMBIGUOUS
public static final int NO_MATCH_BAD_TYPE
public int isApplicable(Type[] argTypes, Type restType)
argTypes - array of known "single" arguments.restType - If null, the arguments are fully specified by argTypes.
If non-null, there may be an unknown number of extra arguments
of the given restType. This is used for splices, where we usually
don't know at compile-time how many argument values we have.public int numParameters()
protected void resolveParameterTypes()
public Type getParameterType(int index)
public static java.lang.RuntimeException matchFailAsException(int code,
Procedure proc,
java.lang.Object[] args)
matchX
method fails.public java.lang.Object applyN(java.lang.Object[] args)
throws java.lang.Throwable
applyN in class ProcedureNjava.lang.Throwablepublic static MethodProc mostSpecific(MethodProc proc1, MethodProc proc2)
public static boolean overrideEquivalent(MethodProc proc1, MethodProc proc2)