@Internal public final class AndArgumentTypeStrategy extends Object implements ArgumentTypeStrategy
ArgumentTypeStrategys
into one like f(NUMERIC && LITERAL)
Some ArgumentTypeStrategys cannot contribute an inferred type that is different from
the input type (e.g. InputTypeStrategies.LITERAL). Therefore, the order f(X && Y) or
f(Y && X) matters as it defines the precedence in case the result must be casted to a more
specific type.
The strategy aims to infer the first more specific, casted type or (if this is not possible)
a type that has been inferred from all ArgumentTypeStrategys.
| Constructor and Description |
|---|
AndArgumentTypeStrategy(List<? extends ArgumentTypeStrategy> argumentStrategies) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
equals(Object o) |
Signature.Argument |
getExpectedArgument(FunctionDefinition functionDefinition,
int argumentPos)
Returns a summary of the function's expected argument at
argumentPos. |
int |
hashCode() |
Optional<DataType> |
inferArgumentType(CallContext callContext,
int argumentPos,
boolean throwOnFailure)
Main logic for inferring and validating an argument.
|
public AndArgumentTypeStrategy(List<? extends ArgumentTypeStrategy> argumentStrategies)
public Optional<DataType> inferArgumentType(CallContext callContext, int argumentPos, boolean throwOnFailure)
ArgumentTypeStrategyCallContext.getArgumentDataTypes() at
argumentPos, a casting operation can be inserted. An empty result means that the given
input type could not be inferred.inferArgumentType in interface ArgumentTypeStrategycallContext - provides details about the function callargumentPos - argument index in the CallContextthrowOnFailure - whether this function is allowed to throw an ValidationException
with a meaningful exception in case the inference is not successful or
if this function should simply return an empty result.CallContext.newValidationError(String, Object...)public Signature.Argument getExpectedArgument(FunctionDefinition functionDefinition, int argumentPos)
ArgumentTypeStrategyargumentPos.getExpectedArgument in interface ArgumentTypeStrategyfunctionDefinition - the function definition that defines the function currently being called.argumentPos - the position within the function call for which the signature should be retrievedCopyright © 2014–2020 The Apache Software Foundation. All rights reserved.