Package com.strobel.expressions
Class Expression
java.lang.Object
com.strobel.expressions.Expression
- Direct Known Subclasses:
BinaryExpression
,BlockExpression
,ConcatExpression
,ConditionalExpression
,ConstantExpression
,DefaultValueExpression
,ForEachExpression
,ForExpression
,GotoExpression
,InvocationExpression
,LabelExpression
,LambdaExpression
,LoopExpression
,MemberExpression
,MethodCallExpression
,NewArrayExpression
,NewExpression
,ParameterExpression
,RuntimeVariablesExpression
,SwitchExpression
,TryExpression
,TypeBinaryExpression
,UnaryExpression
The base type for all nodes in Expression Trees.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final Set
<BindingFlags> private static final Set
<BindingFlags> private static final Class
<?> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected Expression
accept
(ExpressionVisitor visitor) Dispatches to the specific visit method for this node type.private static ExpressionList
<? extends Expression> adaptArguments
(MethodInfo method, ExpressionList<? extends Expression> arguments) static BinaryExpression
add
(Expression left, Expression right) static BinaryExpression
add
(Expression left, Expression right, MethodInfo method) static BinaryExpression
addAssign
(Expression left, Expression right) static BinaryExpression
addAssign
(Expression left, Expression right, MethodInfo method) static BinaryExpression
addAssign
(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) private static BinaryExpression
aggregateBinary
(ExpressionType binaryType, ImmutableList<Expression> operands) static BinaryExpression
and
(Expression left, Expression right) static BinaryExpression
and
(Expression left, Expression right, MethodInfo method) static BinaryExpression
andAlso
(Expression left, Expression right) static BinaryExpression
andAlso
(Expression first, Expression... rest) static BinaryExpression
andAlso
(Expression left, Expression right, MethodInfo method) static BinaryExpression
andAssign
(Expression left, Expression right) static BinaryExpression
andAssign
(Expression left, Expression right, MethodInfo method) static BinaryExpression
andAssign
(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) private static MethodInfo
applyTypeArgs
(MethodInfo m, TypeList typeArgs) static BinaryExpression
arrayIndex
(Expression array, Expression index) static UnaryExpression
arrayLength
(Expression array) (package private) static ParameterExpressionList
arrayToList
(ParameterExpression[] parameters) (package private) static <T extends Expression>
ExpressionList<T> arrayToList
(T[] expressions) (package private) static <T> ReadOnlyList
<T> arrayToReadOnlyList
(T[] items) static BinaryExpression
assign
(Expression left, Expression right) static Expression
static BlockExpression
block
(Expression... expressions) static BlockExpression
block
(ExpressionList<? extends Expression> expressions) static BlockExpression
block
(Expression arg0, Expression arg1) static BlockExpression
block
(Expression arg0, Expression arg1, Expression arg2) static BlockExpression
block
(Expression arg0, Expression arg1, Expression arg2, Expression arg3) static BlockExpression
block
(Expression arg0, Expression arg1, Expression arg2, Expression arg3, Expression arg4) static BlockExpression
block
(ParameterExpression[] variables, Expression... expressions) static BlockExpression
block
(ParameterExpressionList variables, Expression... expressions) static BlockExpression
block
(ParameterExpressionList variables, ExpressionList<? extends Expression> expressions) static BlockExpression
block
(Type<?> type, Expression... expressions) static BlockExpression
block
(Type<?> type, ExpressionList<? extends Expression> expressions) static BlockExpression
block
(Type<?> type, ParameterExpression[] variables, Expression... expressions) static BlockExpression
block
(Type<?> type, ParameterExpressionList variables, Expression... expressions) static BlockExpression
block
(Type<?> type, ParameterExpressionList variables, ExpressionList<? extends Expression> expressions) static Expression
box
(Expression expression) static MethodCallExpression
call
(Expression target, MethodInfo method, Expression... arguments) static MethodCallExpression
call
(Expression target, MethodInfo method, ExpressionList<? extends Expression> arguments) static MethodCallExpression
call
(Expression target, String methodName, Expression... arguments) static MethodCallExpression
call
(Expression target, String methodName, TypeList typeArguments, Expression... arguments) static MethodCallExpression
call
(Expression target, String methodName, TypeList typeArguments, ExpressionList<? extends Expression> arguments) static MethodCallExpression
call
(MethodInfo method, Expression... arguments) static MethodCallExpression
call
(MethodInfo method, ExpressionList<? extends Expression> arguments) static MethodCallExpression
call
(Type<?> declaringType, String methodName, Expression... arguments) static MethodCallExpression
call
(Type<?> declaringType, String methodName, TypeList typeArguments, Expression... arguments) static MethodCallExpression
call
(Type<?> declaringType, String methodName, TypeList typeArguments, ExpressionList<? extends Expression> arguments) boolean
Indicates that the node can be reduced to a simpler node.static ConstantExpression
classConstant
(Type<?> value) static BinaryExpression
coalesce
(Expression left, Expression right) static BinaryExpression
coalesce
(Expression left, Expression right, LambdaExpression<?> conversion) static ConcatExpression
concat
(ExpressionList<? extends Expression> operands) static ConcatExpression
concat
(Expression first, Expression second) static ConcatExpression
concat
(Expression first, Expression second, Expression... operands) static ConditionalExpression
condition
(Expression test, Expression ifTrue, Expression ifFalse) static ConditionalExpression
condition
(Expression test, Expression ifTrue, Expression ifFalse, Type<?> type) static ConstantExpression
static ConstantExpression
static UnaryExpression
convert
(Expression expression, Type<?> type) static UnaryExpression
convert
(Expression expression, Type<?> type, MethodInfo method) static UnaryExpression
decrement
(Expression expression) static UnaryExpression
decrement
(Expression expression, MethodInfo method) static DefaultValueExpression
defaultValue
(Type<?> type) static BinaryExpression
divide
(Expression left, Expression right) static BinaryExpression
divide
(Expression left, Expression right, MethodInfo method) static BinaryExpression
divideAssign
(Expression left, Expression right) static BinaryExpression
divideAssign
(Expression left, Expression right, MethodInfo method) static BinaryExpression
divideAssign
(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) static Expression
empty()
(package private) static <T> List
<T> ensureUnmodifiable
(List<T> list) static BinaryExpression
equal
(Expression left, Expression right) static BinaryExpression
equal
(Expression left, Expression right, MethodInfo method) static BinaryExpression
exclusiveOr
(Expression left, Expression right) static BinaryExpression
exclusiveOr
(Expression left, Expression right, MethodInfo method) static BinaryExpression
exclusiveOrAssign
(Expression left, Expression right) static BinaryExpression
exclusiveOrAssign
(Expression left, Expression right, MethodInfo method) static BinaryExpression
exclusiveOrAssign
(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) static MemberExpression
field
(Expression target, FieldInfo field) static MemberExpression
field
(Expression target, String fieldName) static MemberExpression
static MemberExpression
private static int
findBestMethod
(MemberList<?> methods, TypeList typeArgs, ExpressionList<? extends Expression> arguments) private static FieldInfo
findField
(Type<?> declaringType, String fieldName, Set<BindingFlags> flags) private static MethodInfo
findMethod
(Type<?> type, String methodName, TypeList typeArguments, ExpressionList<? extends Expression> arguments, Set<BindingFlags> flags) static ForEachExpression
forEach
(ParameterExpression variable, Expression sequence, Expression body) static ForEachExpression
forEach
(ParameterExpression variable, Expression sequence, Expression body, LabelTarget breakTarget) static ForEachExpression
forEach
(ParameterExpression variable, Expression sequence, Expression body, LabelTarget breakTarget, LabelTarget continueTarget) private static MethodInfo
getBinaryOperatorMethod
(ExpressionType binaryType, Type<?> leftType, Type<?> rightType, String name) private static MethodInfo
getBinaryOperatorStaticMethod
(ExpressionType binaryType, Type<?> leftType, Type<?> rightType, String name) private static BinaryExpression
getCompareMethodBasedBinaryOperator
(ExpressionType binaryType, Expression left, Expression right) private static BinaryExpression
getComparisonOperator
(ExpressionType binaryType, Expression left, Expression right) final String
private static BinaryExpression
getEqualityComparisonOperator
(ExpressionType binaryType, String opName, Expression left, Expression right) private static BinaryExpression
getEqualsMethodBasedBinaryOperator
(ExpressionType binaryType, Expression left, Expression right) (package private) static MethodInfo
getInvokeMethod
(Expression expression) (package private) static MethodInfo
getInvokeMethod
(Type<?> interfaceType, boolean throwOnError) private static BinaryExpression
getMethodBasedAssignOperator
(ExpressionType binaryType, Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) private static BinaryExpression
getMethodBasedAssignOperator
(ExpressionType binaryType, String name, Expression left, Expression right, LambdaExpression<?> conversion) private static BinaryExpression
getMethodBasedAssignOperatorOrThrow
(ExpressionType binaryType, String name, Expression left, Expression right, LambdaExpression<?> conversion) private static BinaryExpression
getMethodBasedBinaryOperator
(ExpressionType binaryType, Expression left, Expression right, MethodInfo method) private static BinaryExpression
getMethodBasedBinaryOperator
(ExpressionType binaryType, String name, Expression left, Expression right) private static BinaryExpression
getMethodBasedBinaryOperatorOrThrow
(ExpressionType binaryType, String name, Expression left, Expression right) private static UnaryExpression
getMethodBasedCoercion
(ExpressionType coercionType, Expression expression, Type<?> convertToType) private static UnaryExpression
getMethodBasedCoercionOperator
(ExpressionType unaryType, Expression operand, Type<?> convertToType, MethodInfo method) private static UnaryExpression
getMethodBasedCoercionOrThrow
(ExpressionType coercionType, Expression expression, Type<?> convertToType) private static UnaryExpression
getMethodBasedUnaryOperator
(ExpressionType unaryType, Expression operand, MethodInfo method) private static UnaryExpression
getMethodBasedUnaryOperator
(ExpressionType unaryType, String methodName, Expression operand) private static UnaryExpression
getMethodBasedUnaryOperatorOrThrow
(ExpressionType unaryType, Expression operand, String... methodNames) private static UnaryExpression
getMethodBasedUnaryOperatorOrThrow
(ExpressionType unaryType, String methodName, Expression operand) (package private) static MethodInfo
getMethodValidated
(Type<?> type, String name, Set<BindingFlags> bindingFlags, CallingConvention callingConvention, Type<?>... parameterTypes) Returns the node type of thisExpression
.private static BinaryExpression
getStaticMethodBasedBinaryOperator
(ExpressionType binaryType, Expression left, Expression right, MethodInfo method) Type
<?> getType()
Gets the static type of the expression that thisExpression
represents.static BinaryExpression
greaterThan
(Expression left, Expression right) static BinaryExpression
greaterThan
(Expression left, Expression right, MethodInfo method) static BinaryExpression
greaterThanOrEqual
(Expression left, Expression right) static BinaryExpression
greaterThanOrEqual
(Expression left, Expression right, MethodInfo method) static ConditionalExpression
ifThen
(Expression test, Expression ifTrue) static ConditionalExpression
ifThenElse
(Expression test, Expression ifTrue, Expression ifFalse) static UnaryExpression
increment
(Expression expression) static UnaryExpression
increment
(Expression expression, MethodInfo method) static TypeBinaryExpression
instanceOf
(Expression expression, Type<?> type) static InvocationExpression
invoke
(Expression expression, Expression... arguments) static InvocationExpression
invoke
(Expression expression, ExpressionList<? extends Expression> arguments) private static boolean
isCompatible
(MethodBase m, ExpressionList<? extends Expression> arguments) static UnaryExpression
isFalse
(Expression expression) static UnaryExpression
isFalse
(Expression expression, MethodInfo method) static UnaryExpression
isNotNull
(Expression expression) static UnaryExpression
isNull
(Expression expression) private static boolean
isNullComparison
(Expression left, Expression right) private static boolean
static UnaryExpression
isTrue
(Expression expression) static UnaryExpression
isTrue
(Expression expression, MethodInfo method) static LabelTarget
label()
static LabelExpression
label
(LabelTarget target) static LabelExpression
label
(LabelTarget target, Expression defaultValue) static LabelTarget
static LabelTarget
static LabelTarget
static LambdaExpression
<?> lambda
(Expression body, boolean tailCall, ParameterExpression... parameters) static LambdaExpression
<?> lambda
(Expression body, boolean tailCall, ParameterExpressionList parameters) static LambdaExpression
<?> lambda
(Expression body, ParameterExpression... parameters) static LambdaExpression
<?> lambda
(Expression body, ParameterExpressionList parameters) static <T> LambdaExpression
<T> lambda
(Type<?> interfaceType, Expression body, boolean tailCall, ParameterExpression... parameters) static <T> LambdaExpression
<T> lambda
(Type<?> interfaceType, Expression body, boolean tailCall, ParameterExpressionList parameters) static <T> LambdaExpression
<T> lambda
(Type<?> interfaceType, Expression body, ParameterExpression... parameters) static <T> LambdaExpression
<T> lambda
(Type<?> interfaceType, Expression body, ParameterExpressionList parameters) static <T> LambdaExpression
<T> lambda
(Type<?> interfaceType, String name, Expression body, boolean tailCall, ParameterExpression... parameters) static <T> LambdaExpression
<T> lambda
(Type<?> interfaceType, String name, Expression body, boolean tailCall, ParameterExpressionList parameters) static <T> LambdaExpression
<T> lambda
(Type<?> interfaceType, String name, Expression body, ParameterExpression... parameters) static LambdaExpression
<?> lambda
(String name, Expression body, boolean tailCall, ParameterExpression... parameters) static LambdaExpression
<?> lambda
(String name, Expression body, ParameterExpression... parameters) static BinaryExpression
leftShift
(Expression left, Expression right) static BinaryExpression
leftShift
(Expression left, Expression right, MethodInfo method) static BinaryExpression
leftShiftAssign
(Expression left, Expression right) static BinaryExpression
leftShiftAssign
(Expression left, Expression right, MethodInfo method) static BinaryExpression
leftShiftAssign
(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) static BinaryExpression
lessThan
(Expression left, Expression right) static BinaryExpression
lessThan
(Expression left, Expression right, MethodInfo method) static BinaryExpression
lessThanOrEqual
(Expression left, Expression right) static BinaryExpression
lessThanOrEqual
(Expression left, Expression right, MethodInfo method) static LoopExpression
loop
(Expression body) static LoopExpression
loop
(Expression body, LabelTarget breakTarget) static LoopExpression
loop
(Expression body, LabelTarget breakTarget, LabelTarget continueLabel) static BinaryExpression
makeBinary
(ExpressionType binaryType, Expression... rest) static BinaryExpression
makeBinary
(ExpressionType binaryType, Expression left, Expression right) static BinaryExpression
makeBinary
(ExpressionType binaryType, Expression first, Expression... rest) static BinaryExpression
makeBinary
(ExpressionType binaryType, Expression left, Expression right, MethodInfo method) static BinaryExpression
makeBinary
(ExpressionType binaryType, Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) static GotoExpression
makeBreak
(LabelTarget target) static GotoExpression
makeBreak
(LabelTarget target, Expression value) static GotoExpression
makeBreak
(LabelTarget target, Expression value, Type<?> type) static GotoExpression
makeBreak
(LabelTarget target, Type<?> type) static CatchBlock
makeCatch
(ParameterExpression variable, Expression body) static CatchBlock
makeCatch
(ParameterExpression variable, Expression body, Expression filter) static CatchBlock
makeCatch
(Type<?> type, Expression body) static CatchBlock
makeCatch
(Type<?> type, Expression body, Expression filter) static CatchBlock
makeCatch
(Type<?> type, ParameterExpression variable, Expression body) static CatchBlock
makeCatch
(Type<?> type, ParameterExpression variable, Expression body, Expression filter) static GotoExpression
makeContinue
(LabelTarget target) static GotoExpression
makeContinue
(LabelTarget target, Type<?> type) static ForExpression
makeFor
(ParameterExpression variable, Expression initializer, Expression test, Expression step, Expression body) static ForExpression
makeFor
(ParameterExpression variable, Expression initializer, Expression test, Expression step, Expression body, LabelTarget breakTarget) static ForExpression
makeFor
(ParameterExpression variable, Expression initializer, Expression test, Expression step, Expression body, LabelTarget breakTarget, LabelTarget continueTarget) static GotoExpression
makeGoto
(GotoExpressionKind kind, LabelTarget target, Expression value, Type<?> type) static GotoExpression
makeGoto
(LabelTarget target) static GotoExpression
makeGoto
(LabelTarget target, Expression value) static GotoExpression
makeGoto
(LabelTarget target, Expression value, Type<?> type) static GotoExpression
makeGoto
(LabelTarget target, Type<?> type) static MemberExpression
makeMemberAccess
(Expression target, MemberInfo member) static NewExpression
makeNew
(ConstructorInfo constructor) static NewExpression
makeNew
(ConstructorInfo constructor, Expression... parameters) static NewExpression
makeNew
(ConstructorInfo constructor, ExpressionList<? extends Expression> parameters) static NewExpression
makeNew
(Type<?> type, Expression... parameters) private static UnaryExpression
makeOpAssignUnary
(ExpressionType kind, Expression expression, MethodInfo method) static GotoExpression
makeReturn
(LabelTarget target) static GotoExpression
makeReturn
(LabelTarget target, Expression value) static GotoExpression
makeReturn
(LabelTarget target, Expression value, Type<?> type) static GotoExpression
makeReturn
(LabelTarget target, Type<?> type) static SwitchExpression
makeSwitch
(Expression switchValue, Expression defaultBody, SwitchCase... cases) static SwitchExpression
makeSwitch
(Expression switchValue, Expression defaultBody, MethodInfo comparison, ReadOnlyList<SwitchCase> cases) static SwitchExpression
makeSwitch
(Expression switchValue, Expression defaultBody, MethodInfo comparison, SwitchCase... cases) static SwitchExpression
makeSwitch
(Expression switchValue, SwitchCase... cases) static SwitchExpression
makeSwitch
(Expression switchValue, SwitchOptions options, Expression defaultBody, SwitchCase... cases) static SwitchExpression
makeSwitch
(Expression switchValue, SwitchOptions options, Expression defaultBody, MethodInfo comparison, ReadOnlyList<SwitchCase> cases) static SwitchExpression
makeSwitch
(Expression switchValue, SwitchOptions options, Expression defaultBody, MethodInfo comparison, SwitchCase... cases) static SwitchExpression
makeSwitch
(Expression switchValue, SwitchOptions options, SwitchCase... cases) static SwitchExpression
makeSwitch
(Type<?> type, Expression switchValue, Expression defaultBody, SwitchCase... cases) static SwitchExpression
makeSwitch
(Type<?> type, Expression switchValue, Expression defaultBody, MethodInfo comparison, SwitchCase... cases) static SwitchExpression
makeSwitch
(Type<?> type, Expression switchValue, SwitchOptions options, Expression defaultBody, SwitchCase... cases) static SwitchExpression
makeSwitch
(Type<?> type, Expression switchValue, SwitchOptions options, Expression defaultBody, MethodInfo comparison, ReadOnlyList<SwitchCase> cases) static SwitchExpression
makeSwitch
(Type<?> type, Expression switchValue, SwitchOptions options, Expression defaultBody, MethodInfo comparison, SwitchCase... cases) static UnaryExpression
makeThrow
(Expression expression) static UnaryExpression
makeThrow
(Expression value, Type<?> type) static TryExpression
makeTry
(Type<?> type, Expression body, ReadOnlyList<CatchBlock> catchBlocks, Expression finallyBlock) static TryExpression
makeTry
(Type<?> type, Expression body, CatchBlock... handlers) static TryExpression
makeTry
(Type<?> type, Expression body, Expression finallyBlock, CatchBlock... handlers) static UnaryExpression
makeUnary
(ExpressionType unaryType, Expression operand, Type<?> type) static UnaryExpression
makeUnary
(ExpressionType unaryType, Expression operand, Type<?> type, MethodInfo method) (package private) static boolean
methodArgumentsMatch
(MethodInfo method, Type<?>... argumentTypes) static BinaryExpression
modulo
(Expression left, Expression right) static BinaryExpression
modulo
(Expression left, Expression right, MethodInfo method) static BinaryExpression
moduloAssign
(Expression left, Expression right) static BinaryExpression
moduloAssign
(Expression left, Expression right, MethodInfo method) static BinaryExpression
moduloAssign
(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) static BinaryExpression
multiply
(Expression left, Expression right) static BinaryExpression
multiply
(Expression left, Expression right, MethodInfo method) static BinaryExpression
multiplyAssign
(Expression left, Expression right) static BinaryExpression
multiplyAssign
(Expression left, Expression right, MethodInfo method) static BinaryExpression
multiplyAssign
(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) static UnaryExpression
negate
(Expression expression) static UnaryExpression
negate
(Expression expression, MethodInfo method) static NewArrayExpression
newArrayBounds
(Type<?> elementType, Expression dimension) static NewArrayExpression
newArrayInit
(Type<?> elementType, Expression... initializers) static NewArrayExpression
newArrayInit
(Type<?> elementType, ExpressionList<? extends Expression> initializers) static UnaryExpression
not
(Expression expression) static UnaryExpression
not
(Expression expression, MethodInfo method) static BinaryExpression
notEqual
(Expression left, Expression right) static BinaryExpression
notEqual
(Expression left, Expression right, MethodInfo method) static UnaryExpression
onesComplement
(Expression expression) static UnaryExpression
onesComplement
(Expression expression, MethodInfo method) static BinaryExpression
or
(Expression left, Expression right) static BinaryExpression
or
(Expression left, Expression right, MethodInfo method) static BinaryExpression
orAssign
(Expression left, Expression right) static BinaryExpression
orAssign
(Expression left, Expression right, MethodInfo method) static BinaryExpression
orAssign
(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) static BinaryExpression
orElse
(Expression left, Expression right) static BinaryExpression
orElse
(Expression first, Expression... rest) static BinaryExpression
orElse
(Expression left, Expression right, MethodInfo method) static ParameterExpression
static ParameterExpression
(package private) static boolean
parameterIsAssignable
(Type<?> parameterType, Type<?> argumentType) static ParameterExpressionList
parameters
(ParameterExpression... parameters) (package private) static Type
<?> performBinaryNumericPromotion
(Type<?> leftType, Type<?> rightType) static UnaryExpression
postDecrementAssign
(Expression expression) static UnaryExpression
postDecrementAssign
(Expression expression, MethodInfo method) static UnaryExpression
postIncrementAssign
(Expression expression) static UnaryExpression
postIncrementAssign
(Expression expression, MethodInfo method) static UnaryExpression
preDecrementAssign
(Expression expression) static UnaryExpression
preDecrementAssign
(Expression expression, MethodInfo method) static UnaryExpression
preIncrementAssign
(Expression expression) static UnaryExpression
preIncrementAssign
(Expression expression, MethodInfo method) reduce()
Reduces this node to a simpler expression.final Expression
Reduces this node to a simpler expression.final Expression
Reduces the expression to a known node type (i.e.static BinaryExpression
referenceEqual
(Expression left, Expression right) static BinaryExpression
referenceNotEqual
(Expression left, Expression right) (package private) static <T extends Expression>
TreturnObject
(Class<T> clazz, Object objectOrCollection) static BinaryExpression
rightShift
(Expression left, Expression right) static BinaryExpression
rightShift
(Expression left, Expression right, MethodInfo method) static BinaryExpression
rightShiftAssign
(Expression left, Expression right) static BinaryExpression
rightShiftAssign
(Expression left, Expression right, MethodInfo method) static BinaryExpression
rightShiftAssign
(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) static RuntimeVariablesExpression
runtimeVariables
(ParameterExpression... variables) static RuntimeVariablesExpression
runtimeVariables
(ParameterExpressionList variables) static Expression
static BinaryExpression
subtract
(Expression left, Expression right) static BinaryExpression
subtract
(Expression left, Expression right, MethodInfo method) static BinaryExpression
subtractAssign
(Expression left, Expression right) static BinaryExpression
subtractAssign
(Expression left, Expression right, MethodInfo method) static BinaryExpression
subtractAssign
(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) static SwitchCase
switchCase
(Expression body, Expression... testValues) static SwitchCase
switchCase
(Expression body, ExpressionList<? extends Expression> testValues) toString()
static TryExpression
tryCatch
(Expression body, CatchBlock... handlers) static TryExpression
tryCatchFinally
(Expression body, Expression finallyBlock, CatchBlock... handlers) static TryExpression
tryFinally
(Expression body, Expression finallyBlock) static TypeBinaryExpression
typeEqual
(Expression expression, Type<?> type) private static Type<?>[]
types
(Expression... expressions) private static Type<?>[]
types
(Iterable<? extends Expression> expressions) static UnaryExpression
unaryPlus
(Expression expression) static UnaryExpression
unaryPlus
(Expression expression, MethodInfo method) static UnaryExpression
unbox
(Expression expression) static UnaryExpression
unbox
(Expression expression, Type<?> type) static BinaryExpression
unsignedRightShift
(Expression left, Expression right) static BinaryExpression
unsignedRightShift
(Expression left, Expression right, MethodInfo method) static BinaryExpression
unsignedRightShiftAssign
(Expression left, Expression right) static BinaryExpression
unsignedRightShiftAssign
(Expression left, Expression right, MethodInfo method) static BinaryExpression
unsignedRightShiftAssign
(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) private static void
validateArgumentCount
(MethodBase method, ExpressionType nodeKind, int count, TypeList parameterTypes) private static <T extends Expression>
ExpressionList<T> validateArgumentTypes
(MethodBase method, ExpressionType nodeKind, ExpressionList<T> arguments) private static void
validateCallTargetType
(Type<?> targetType, MethodInfo method) private static Type
<?> validateCoalesceArgumentTypes
(Type<?> left, Type<?> right) private static void
validateGoto
(LabelTarget target, Expression value, String targetParameter, String valueParameter) private static void
validateGotoType
(Type<?> expectedType, Expression value, String valueParameter) private static <T> void
validateLambdaArgs
(Type<T> interfaceType, Expression body, ParameterExpressionList parameters) private static <T extends Expression>
TvalidateOneArgument
(MethodBase method, ExpressionType nodeKind, T arg, Type<?> parameterType) private static void
validateOpAssignConversionLambda
(LambdaExpression<?> conversion, Expression left, MethodInfo method, ExpressionType nodeType) private static void
validateOperator
(MethodInfo method) private static void
validateStaticOrInstanceMethod
(Expression instance, MethodInfo method) private static void
validateSwitchCaseType
(Expression caseBody, boolean customType, Type<?> resultType, String parameterName) private static void
validateTryAndCatchHaveSameType
(Type<?> type, Expression tryBody, ReadOnlyList<CatchBlock> handlers) (package private) static void
validateVariables
(ParameterExpressionList varList, String collectionName) static ParameterExpression
static ParameterExpression
static ParameterExpressionList
variables
(ParameterExpression... parameters) private static void
verifyCanRead
(Expression[] items, String parameterName) private static void
verifyCanRead
(Expression expression, String parameterName) private static void
verifyCanRead
(Iterable<? extends Expression> items, String parameterName) private static void
verifyCanWrite
(Expression expression, String parameterName) private static void
verifyCanWrite
(Iterable<? extends Expression> items, String parameterName) private static void
verifyTypeBinaryExpressionOperand
(Expression expression, Type<?> type) protected Expression
visitChildren
(ExpressionVisitor visitor) Reduces the node and then calls the visitor on the reduced expression.
-
Field Details
-
UNMODIFIABLE_LIST_CLASS
-
StaticMemberBindingFlags
-
InstanceMemberBindingFlags
-
-
Constructor Details
-
Expression
protected Expression()
-
-
Method Details
-
getNodeType
Returns the node type of thisExpression
.- Returns:
- the
ExpressionType
that represents this expression.
-
getType
Gets the static type of the expression that thisExpression
represents.- Returns:
- the
Type
that represents the static type of the expression.
-
canReduce
public boolean canReduce()Indicates that the node can be reduced to a simpler node. If this returnstrue
,reduce()
can be called to produce the reduced form.- Returns:
true
if the node can be reduced; otherwise,false
.
-
reduce
Reduces this node to a simpler expression. IfcanReduce()
returnstrue
, this should return a valid expression. This method is allowed to return another node which itself must be reduced.- Returns:
- the reduced expression.
-
reduceAndCheck
Reduces this node to a simpler expression. IfcanReduce()
returnstrue
, this should return a valid expression. This method is allowed to return another node which itself must be reduced. Unlikereduce()
, this method checks that the reduced node satisfies certain invariants.- Returns:
- the reduced expression.
-
reduceExtensions
Reduces the expression to a known node type (i.e. not an Extension node or simply returns the expression if it is already a known type.- Returns:
- the reduced expression.
-
accept
Dispatches to the specific visit method for this node type. For example,BinaryExpression
will call intoExpressionVisitor.visitBinary()
.- Parameters:
visitor
- the visitor to visit this node.- Returns:
- the result of visiting this node.
-
visitChildren
Reduces the node and then calls the visitor on the reduced expression. Throws an exception if the node isn't reducible.- Parameters:
visitor
- an expression visitor- Returns:
- the expression being visited, or an expression which should replace it in the tree.
-
getDebugView
-
toString
-
empty
-
self
-
base
-
label
-
label
-
label
-
label
-
label
-
label
-
makeBreak
-
makeBreak
-
makeBreak
-
makeBreak
-
makeContinue
-
makeContinue
-
makeReturn
-
makeReturn
-
makeReturn
-
makeReturn
-
makeGoto
-
makeGoto
-
makeGoto
-
makeGoto
-
makeGoto
public static GotoExpression makeGoto(GotoExpressionKind kind, LabelTarget target, Expression value, Type<?> type) -
loop
-
loop
-
loop
public static LoopExpression loop(Expression body, LabelTarget breakTarget, LabelTarget continueLabel) -
forEach
public static ForEachExpression forEach(ParameterExpression variable, Expression sequence, Expression body) -
forEach
public static ForEachExpression forEach(ParameterExpression variable, Expression sequence, Expression body, LabelTarget breakTarget) -
forEach
public static ForEachExpression forEach(ParameterExpression variable, Expression sequence, Expression body, LabelTarget breakTarget, LabelTarget continueTarget) -
makeFor
public static ForExpression makeFor(ParameterExpression variable, Expression initializer, Expression test, Expression step, Expression body) -
makeFor
public static ForExpression makeFor(ParameterExpression variable, Expression initializer, Expression test, Expression step, Expression body, LabelTarget breakTarget) -
makeFor
public static ForExpression makeFor(ParameterExpression variable, Expression initializer, Expression test, Expression step, Expression body, LabelTarget breakTarget, LabelTarget continueTarget) -
makeNew
-
makeNew
-
makeNew
-
makeNew
public static NewExpression makeNew(ConstructorInfo constructor, ExpressionList<? extends Expression> parameters) -
newArrayInit
-
newArrayInit
public static NewArrayExpression newArrayInit(Type<?> elementType, ExpressionList<? extends Expression> initializers) -
newArrayBounds
-
concat
-
concat
-
concat
-
makeCatch
-
makeCatch
-
makeCatch
-
makeCatch
public static CatchBlock makeCatch(ParameterExpression variable, Expression body, Expression filter) -
makeCatch
public static CatchBlock makeCatch(Type<?> type, ParameterExpression variable, Expression body, Expression filter) -
makeCatch
-
tryFinally
-
tryCatch
-
makeTry
-
tryCatchFinally
public static TryExpression tryCatchFinally(Expression body, Expression finallyBlock, CatchBlock... handlers) -
makeTry
public static TryExpression makeTry(Type<?> type, Expression body, Expression finallyBlock, CatchBlock... handlers) -
makeTry
public static TryExpression makeTry(Type<?> type, Expression body, ReadOnlyList<CatchBlock> catchBlocks, Expression finallyBlock) -
runtimeVariables
-
runtimeVariables
-
condition
public static ConditionalExpression condition(Expression test, Expression ifTrue, Expression ifFalse) -
condition
public static ConditionalExpression condition(Expression test, Expression ifTrue, Expression ifFalse, Type<?> type) -
ifThen
-
ifThenElse
public static ConditionalExpression ifThenElse(Expression test, Expression ifTrue, Expression ifFalse) -
makeMemberAccess
-
field
-
field
-
field
-
field
-
constant
-
constant
-
classConstant
-
parameters
-
variables
-
parameter
-
variable
-
parameter
-
variable
-
makeUnary
-
makeUnary
public static UnaryExpression makeUnary(ExpressionType unaryType, Expression operand, Type<?> type, MethodInfo method) -
negate
-
negate
-
not
-
not
-
isFalse
-
isFalse
-
isTrue
-
isTrue
-
onesComplement
-
onesComplement
-
arrayLength
-
convert
-
convert
-
isNull
-
isNotNull
-
makeThrow
-
makeThrow
-
unaryPlus
-
unaryPlus
-
box
-
unbox
-
unbox
-
increment
-
increment
-
decrement
-
decrement
-
preIncrementAssign
-
preIncrementAssign
-
postIncrementAssign
-
postIncrementAssign
-
preDecrementAssign
-
preDecrementAssign
-
postDecrementAssign
-
postDecrementAssign
-
block
-
block
-
block
public static BlockExpression block(Expression arg0, Expression arg1, Expression arg2, Expression arg3) -
block
public static BlockExpression block(Expression arg0, Expression arg1, Expression arg2, Expression arg3, Expression arg4) -
block
-
block
-
block
-
block
-
block
public static BlockExpression block(ParameterExpressionList variables, ExpressionList<? extends Expression> expressions) -
block
-
block
-
block
public static BlockExpression block(Type<?> type, ParameterExpression[] variables, Expression... expressions) -
block
public static BlockExpression block(Type<?> type, ParameterExpressionList variables, Expression... expressions) -
block
public static BlockExpression block(Type<?> type, ParameterExpressionList variables, ExpressionList<? extends Expression> expressions) -
makeBinary
-
makeBinary
public static BinaryExpression makeBinary(ExpressionType binaryType, Expression first, Expression... rest) -
makeBinary
public static BinaryExpression makeBinary(ExpressionType binaryType, Expression left, Expression right) -
makeBinary
public static BinaryExpression makeBinary(ExpressionType binaryType, Expression left, Expression right, MethodInfo method) -
makeBinary
public static BinaryExpression makeBinary(ExpressionType binaryType, Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) -
add
-
add
-
coalesce
-
coalesce
public static BinaryExpression coalesce(Expression left, Expression right, LambdaExpression<?> conversion) -
subtract
-
subtract
-
multiply
-
multiply
-
divide
-
divide
-
modulo
-
modulo
-
leftShift
-
leftShift
-
rightShift
-
rightShift
-
unsignedRightShift
-
unsignedRightShift
public static BinaryExpression unsignedRightShift(Expression left, Expression right, MethodInfo method) -
and
-
and
-
or
-
or
-
exclusiveOr
-
exclusiveOr
-
andAlso
-
andAlso
-
andAlso
-
orElse
-
orElse
-
orElse
-
lessThan
-
lessThan
-
lessThanOrEqual
-
lessThanOrEqual
public static BinaryExpression lessThanOrEqual(Expression left, Expression right, MethodInfo method) -
greaterThan
-
greaterThan
-
greaterThanOrEqual
-
greaterThanOrEqual
public static BinaryExpression greaterThanOrEqual(Expression left, Expression right, MethodInfo method) -
equal
-
equal
-
notEqual
-
notEqual
-
referenceEqual
-
referenceNotEqual
-
arrayIndex
-
assign
-
addAssign
-
addAssign
-
addAssign
public static BinaryExpression addAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) -
subtractAssign
-
subtractAssign
-
subtractAssign
public static BinaryExpression subtractAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) -
multiplyAssign
-
multiplyAssign
-
multiplyAssign
public static BinaryExpression multiplyAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) -
divideAssign
-
divideAssign
-
divideAssign
public static BinaryExpression divideAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) -
moduloAssign
-
moduloAssign
-
moduloAssign
public static BinaryExpression moduloAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) -
leftShiftAssign
-
leftShiftAssign
public static BinaryExpression leftShiftAssign(Expression left, Expression right, MethodInfo method) -
leftShiftAssign
public static BinaryExpression leftShiftAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) -
rightShiftAssign
-
rightShiftAssign
public static BinaryExpression rightShiftAssign(Expression left, Expression right, MethodInfo method) -
rightShiftAssign
public static BinaryExpression rightShiftAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) -
unsignedRightShiftAssign
-
unsignedRightShiftAssign
public static BinaryExpression unsignedRightShiftAssign(Expression left, Expression right, MethodInfo method) -
unsignedRightShiftAssign
public static BinaryExpression unsignedRightShiftAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) -
orAssign
-
orAssign
-
orAssign
public static BinaryExpression orAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) -
andAssign
-
andAssign
-
andAssign
public static BinaryExpression andAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) -
exclusiveOrAssign
-
exclusiveOrAssign
public static BinaryExpression exclusiveOrAssign(Expression left, Expression right, MethodInfo method) -
exclusiveOrAssign
public static BinaryExpression exclusiveOrAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) -
instanceOf
-
typeEqual
-
lambda
public static LambdaExpression<?> lambda(String name, Expression body, ParameterExpression... parameters) -
lambda
-
lambda
public static LambdaExpression<?> lambda(Expression body, boolean tailCall, ParameterExpression... parameters) -
lambda
public static LambdaExpression<?> lambda(String name, Expression body, boolean tailCall, ParameterExpression... parameters) -
lambda
-
lambda
public static LambdaExpression<?> lambda(Expression body, boolean tailCall, ParameterExpressionList parameters) -
lambda
public static <T> LambdaExpression<T> lambda(Type<?> interfaceType, String name, Expression body, ParameterExpression... parameters) -
lambda
public static <T> LambdaExpression<T> lambda(Type<?> interfaceType, Expression body, ParameterExpression... parameters) -
lambda
public static <T> LambdaExpression<T> lambda(Type<?> interfaceType, Expression body, boolean tailCall, ParameterExpression... parameters) -
lambda
public static <T> LambdaExpression<T> lambda(Type<?> interfaceType, String name, Expression body, boolean tailCall, ParameterExpression... parameters) -
lambda
public static <T> LambdaExpression<T> lambda(Type<?> interfaceType, Expression body, ParameterExpressionList parameters) -
lambda
public static <T> LambdaExpression<T> lambda(Type<?> interfaceType, Expression body, boolean tailCall, ParameterExpressionList parameters) -
lambda
public static <T> LambdaExpression<T> lambda(Type<?> interfaceType, String name, Expression body, boolean tailCall, ParameterExpressionList parameters) -
invoke
-
invoke
public static InvocationExpression invoke(Expression expression, ExpressionList<? extends Expression> arguments) -
call
-
call
public static MethodCallExpression call(MethodInfo method, ExpressionList<? extends Expression> arguments) -
call
public static MethodCallExpression call(Expression target, MethodInfo method, Expression... arguments) -
call
public static MethodCallExpression call(Expression target, MethodInfo method, ExpressionList<? extends Expression> arguments) -
call
public static MethodCallExpression call(Expression target, String methodName, Expression... arguments) -
call
public static MethodCallExpression call(Expression target, String methodName, TypeList typeArguments, Expression... arguments) -
call
public static MethodCallExpression call(Expression target, String methodName, TypeList typeArguments, ExpressionList<? extends Expression> arguments) -
call
public static MethodCallExpression call(Type<?> declaringType, String methodName, Expression... arguments) -
call
public static MethodCallExpression call(Type<?> declaringType, String methodName, TypeList typeArguments, Expression... arguments) -
call
public static MethodCallExpression call(Type<?> declaringType, String methodName, TypeList typeArguments, ExpressionList<? extends Expression> arguments) -
adaptArguments
private static ExpressionList<? extends Expression> adaptArguments(MethodInfo method, ExpressionList<? extends Expression> arguments) -
defaultValue
-
switchCase
-
switchCase
public static SwitchCase switchCase(Expression body, ExpressionList<? extends Expression> testValues) -
makeSwitch
-
makeSwitch
public static SwitchExpression makeSwitch(Expression switchValue, SwitchOptions options, SwitchCase... cases) -
makeSwitch
public static SwitchExpression makeSwitch(Expression switchValue, Expression defaultBody, SwitchCase... cases) -
makeSwitch
public static SwitchExpression makeSwitch(Expression switchValue, SwitchOptions options, Expression defaultBody, SwitchCase... cases) -
makeSwitch
public static SwitchExpression makeSwitch(Expression switchValue, Expression defaultBody, MethodInfo comparison, SwitchCase... cases) -
makeSwitch
public static SwitchExpression makeSwitch(Type<?> type, Expression switchValue, Expression defaultBody, SwitchCase... cases) -
makeSwitch
public static SwitchExpression makeSwitch(Expression switchValue, SwitchOptions options, Expression defaultBody, MethodInfo comparison, SwitchCase... cases) -
makeSwitch
public static SwitchExpression makeSwitch(Type<?> type, Expression switchValue, SwitchOptions options, Expression defaultBody, SwitchCase... cases) -
makeSwitch
public static SwitchExpression makeSwitch(Type<?> type, Expression switchValue, Expression defaultBody, MethodInfo comparison, SwitchCase... cases) -
makeSwitch
public static SwitchExpression makeSwitch(Type<?> type, Expression switchValue, SwitchOptions options, Expression defaultBody, MethodInfo comparison, SwitchCase... cases) -
makeSwitch
public static SwitchExpression makeSwitch(Expression switchValue, Expression defaultBody, MethodInfo comparison, ReadOnlyList<SwitchCase> cases) -
makeSwitch
public static SwitchExpression makeSwitch(Expression switchValue, SwitchOptions options, Expression defaultBody, MethodInfo comparison, ReadOnlyList<SwitchCase> cases) -
makeSwitch
public static SwitchExpression makeSwitch(Type<?> type, Expression switchValue, SwitchOptions options, Expression defaultBody, MethodInfo comparison, ReadOnlyList<SwitchCase> cases) -
arrayToList
-
arrayToReadOnlyList
-
arrayToList
-
verifyCanRead
-
verifyCanRead
-
verifyCanRead
-
verifyCanWrite
-
verifyCanWrite
-
validateVariables
-
getMethodBasedUnaryOperator
private static UnaryExpression getMethodBasedUnaryOperator(ExpressionType unaryType, Expression operand, MethodInfo method) -
getMethodBasedUnaryOperatorOrThrow
private static UnaryExpression getMethodBasedUnaryOperatorOrThrow(ExpressionType unaryType, String methodName, Expression operand) -
getMethodBasedUnaryOperatorOrThrow
private static UnaryExpression getMethodBasedUnaryOperatorOrThrow(ExpressionType unaryType, Expression operand, String... methodNames) -
getMethodBasedUnaryOperator
private static UnaryExpression getMethodBasedUnaryOperator(ExpressionType unaryType, String methodName, Expression operand) -
validateOperator
-
getMethodBasedCoercionOrThrow
private static UnaryExpression getMethodBasedCoercionOrThrow(ExpressionType coercionType, Expression expression, Type<?> convertToType) -
getMethodBasedCoercion
private static UnaryExpression getMethodBasedCoercion(ExpressionType coercionType, Expression expression, Type<?> convertToType) -
getMethodBasedCoercionOperator
private static UnaryExpression getMethodBasedCoercionOperator(ExpressionType unaryType, Expression operand, Type<?> convertToType, MethodInfo method) -
makeOpAssignUnary
private static UnaryExpression makeOpAssignUnary(ExpressionType kind, Expression expression, MethodInfo method) -
parameterIsAssignable
-
getMethodValidated
static MethodInfo getMethodValidated(Type<?> type, String name, Set<BindingFlags> bindingFlags, CallingConvention callingConvention, Type<?>... parameterTypes) -
methodArgumentsMatch
-
ensureUnmodifiable
-
returnObject
-
aggregateBinary
private static BinaryExpression aggregateBinary(ExpressionType binaryType, ImmutableList<Expression> operands) -
verifyTypeBinaryExpressionOperand
-
getInvokeMethod
-
getInvokeMethod
-
getEqualityComparisonOperator
private static BinaryExpression getEqualityComparisonOperator(ExpressionType binaryType, String opName, Expression left, Expression right) -
getBinaryOperatorMethod
private static MethodInfo getBinaryOperatorMethod(ExpressionType binaryType, Type<?> leftType, Type<?> rightType, String name) -
getBinaryOperatorStaticMethod
private static MethodInfo getBinaryOperatorStaticMethod(ExpressionType binaryType, Type<?> leftType, Type<?> rightType, String name) -
getMethodBasedBinaryOperator
private static BinaryExpression getMethodBasedBinaryOperator(ExpressionType binaryType, String name, Expression left, Expression right) -
getCompareMethodBasedBinaryOperator
private static BinaryExpression getCompareMethodBasedBinaryOperator(ExpressionType binaryType, Expression left, Expression right) -
getEqualsMethodBasedBinaryOperator
private static BinaryExpression getEqualsMethodBasedBinaryOperator(ExpressionType binaryType, Expression left, Expression right) -
getMethodBasedBinaryOperator
private static BinaryExpression getMethodBasedBinaryOperator(ExpressionType binaryType, Expression left, Expression right, MethodInfo method) -
getStaticMethodBasedBinaryOperator
private static BinaryExpression getStaticMethodBasedBinaryOperator(ExpressionType binaryType, Expression left, Expression right, MethodInfo method) -
getMethodBasedBinaryOperatorOrThrow
private static BinaryExpression getMethodBasedBinaryOperatorOrThrow(ExpressionType binaryType, String name, Expression left, Expression right) -
getMethodBasedAssignOperator
private static BinaryExpression getMethodBasedAssignOperator(ExpressionType binaryType, String name, Expression left, Expression right, LambdaExpression<?> conversion) -
getMethodBasedAssignOperatorOrThrow
private static BinaryExpression getMethodBasedAssignOperatorOrThrow(ExpressionType binaryType, String name, Expression left, Expression right, LambdaExpression<?> conversion) -
getMethodBasedAssignOperator
private static BinaryExpression getMethodBasedAssignOperator(ExpressionType binaryType, Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) -
validateOpAssignConversionLambda
private static void validateOpAssignConversionLambda(LambdaExpression<?> conversion, Expression left, MethodInfo method, ExpressionType nodeType) -
getComparisonOperator
private static BinaryExpression getComparisonOperator(ExpressionType binaryType, Expression left, Expression right) -
isNullConstant
-
isNullComparison
-
validateStaticOrInstanceMethod
-
validateCallTargetType
-
validateArgumentTypes
private static <T extends Expression> ExpressionList<T> validateArgumentTypes(MethodBase method, ExpressionType nodeKind, ExpressionList<T> arguments) -
validateOneArgument
private static <T extends Expression> T validateOneArgument(MethodBase method, ExpressionType nodeKind, T arg, Type<?> parameterType) -
validateArgumentCount
private static void validateArgumentCount(MethodBase method, ExpressionType nodeKind, int count, TypeList parameterTypes) -
validateLambdaArgs
private static <T> void validateLambdaArgs(Type<T> interfaceType, Expression body, ParameterExpressionList parameters) -
validateGoto
private static void validateGoto(LabelTarget target, Expression value, String targetParameter, String valueParameter) -
validateGotoType
-
validateTryAndCatchHaveSameType
private static void validateTryAndCatchHaveSameType(Type<?> type, Expression tryBody, ReadOnlyList<CatchBlock> handlers) -
validateSwitchCaseType
private static void validateSwitchCaseType(Expression caseBody, boolean customType, Type<?> resultType, String parameterName) -
findField
private static FieldInfo findField(Type<?> declaringType, String fieldName, Set<BindingFlags> flags) -
types
-
types
-
findMethod
private static MethodInfo findMethod(Type<?> type, String methodName, TypeList typeArguments, ExpressionList<? extends Expression> arguments, Set<BindingFlags> flags) -
findBestMethod
private static int findBestMethod(MemberList<?> methods, TypeList typeArgs, ExpressionList<? extends Expression> arguments) -
isCompatible
-
applyTypeArgs
-
performBinaryNumericPromotion
-
validateCoalesceArgumentTypes
-