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
public abstract class Expression extends java.lang.Object
The base type for all nodes in Expression Trees.
-
-
Field Summary
Fields Modifier and Type Field Description private static java.util.Set<BindingFlags>
InstanceMemberBindingFlags
private static java.util.Set<BindingFlags>
StaticMemberBindingFlags
private static java.lang.Class<?>
UNMODIFIABLE_LIST_CLASS
-
Constructor Summary
Constructors Modifier Constructor Description protected
Expression()
-
Method Summary
-
-
-
Field Detail
-
UNMODIFIABLE_LIST_CLASS
private static final java.lang.Class<?> UNMODIFIABLE_LIST_CLASS
-
StaticMemberBindingFlags
private static final java.util.Set<BindingFlags> StaticMemberBindingFlags
-
InstanceMemberBindingFlags
private static final java.util.Set<BindingFlags> InstanceMemberBindingFlags
-
-
Method Detail
-
getNodeType
public ExpressionType getNodeType()
Returns the node type of thisExpression
.- Returns:
- the
ExpressionType
that represents this expression.
-
getType
public Type<?> 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
public Expression 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
public final 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
public final 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
protected Expression accept(ExpressionVisitor visitor)
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
protected Expression visitChildren(ExpressionVisitor visitor)
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
public final java.lang.String getDebugView()
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
empty
public static Expression empty()
-
self
public static Expression self(Type<?> type)
-
base
public static Expression base(Type<?> type)
-
label
public static LabelTarget label()
-
label
public static LabelTarget label(java.lang.String name)
-
label
public static LabelTarget label(Type<?> type)
-
label
public static LabelTarget label(Type<?> type, java.lang.String name)
-
label
public static LabelExpression label(LabelTarget target)
-
label
public static LabelExpression label(LabelTarget target, Expression defaultValue)
-
makeBreak
public static GotoExpression makeBreak(LabelTarget target)
-
makeBreak
public static GotoExpression makeBreak(LabelTarget target, Expression value)
-
makeBreak
public static GotoExpression makeBreak(LabelTarget target, Type<?> type)
-
makeBreak
public static GotoExpression makeBreak(LabelTarget target, Expression value, Type<?> type)
-
makeContinue
public static GotoExpression makeContinue(LabelTarget target)
-
makeContinue
public static GotoExpression makeContinue(LabelTarget target, Type<?> type)
-
makeReturn
public static GotoExpression makeReturn(LabelTarget target)
-
makeReturn
public static GotoExpression makeReturn(LabelTarget target, Type<?> type)
-
makeReturn
public static GotoExpression makeReturn(LabelTarget target, Expression value)
-
makeReturn
public static GotoExpression makeReturn(LabelTarget target, Expression value, Type<?> type)
-
makeGoto
public static GotoExpression makeGoto(LabelTarget target)
-
makeGoto
public static GotoExpression makeGoto(LabelTarget target, Type<?> type)
-
makeGoto
public static GotoExpression makeGoto(LabelTarget target, Expression value)
-
makeGoto
public static GotoExpression makeGoto(LabelTarget target, Expression value, Type<?> type)
-
makeGoto
public static GotoExpression makeGoto(GotoExpressionKind kind, LabelTarget target, Expression value, Type<?> type)
-
loop
public static LoopExpression loop(Expression body)
-
loop
public static LoopExpression loop(Expression body, LabelTarget breakTarget)
-
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
public static NewExpression makeNew(Type<?> type, Expression... parameters)
-
makeNew
public static NewExpression makeNew(ConstructorInfo constructor)
-
makeNew
public static NewExpression makeNew(ConstructorInfo constructor, Expression... parameters)
-
makeNew
public static NewExpression makeNew(ConstructorInfo constructor, ExpressionList<? extends Expression> parameters)
-
newArrayInit
public static NewArrayExpression newArrayInit(Type<?> elementType, Expression... initializers)
-
newArrayInit
public static NewArrayExpression newArrayInit(Type<?> elementType, ExpressionList<? extends Expression> initializers)
-
newArrayBounds
public static NewArrayExpression newArrayBounds(Type<?> elementType, Expression dimension)
-
concat
public static ConcatExpression concat(Expression first, Expression second)
-
concat
public static ConcatExpression concat(Expression first, Expression second, Expression... operands)
-
concat
public static ConcatExpression concat(ExpressionList<? extends Expression> operands)
-
makeCatch
public static CatchBlock makeCatch(Type<?> type, Expression body)
-
makeCatch
public static CatchBlock makeCatch(ParameterExpression variable, Expression body)
-
makeCatch
public static CatchBlock makeCatch(Type<?> type, Expression body, Expression filter)
-
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
public static CatchBlock makeCatch(Type<?> type, ParameterExpression variable, Expression body)
-
tryFinally
public static TryExpression tryFinally(Expression body, Expression finallyBlock)
-
tryCatch
public static TryExpression tryCatch(Expression body, CatchBlock... handlers)
-
makeTry
public static TryExpression makeTry(Type<?> type, Expression body, CatchBlock... handlers)
-
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
public static RuntimeVariablesExpression runtimeVariables(ParameterExpression... variables)
-
runtimeVariables
public static RuntimeVariablesExpression runtimeVariables(ParameterExpressionList variables)
-
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
public static ConditionalExpression ifThen(Expression test, Expression ifTrue)
-
ifThenElse
public static ConditionalExpression ifThenElse(Expression test, Expression ifTrue, Expression ifFalse)
-
makeMemberAccess
public static MemberExpression makeMemberAccess(Expression target, MemberInfo member)
-
field
public static MemberExpression field(Expression target, FieldInfo field)
-
field
public static MemberExpression field(FieldInfo field)
-
field
public static MemberExpression field(Type<?> declaringType, java.lang.String fieldName)
-
field
public static MemberExpression field(Expression target, java.lang.String fieldName)
-
constant
public static ConstantExpression constant(java.lang.Object value)
-
constant
public static ConstantExpression constant(java.lang.Object value, Type<?> type)
-
classConstant
public static ConstantExpression classConstant(Type<?> value)
-
parameters
public static ParameterExpressionList parameters(ParameterExpression... parameters)
-
variables
public static ParameterExpressionList variables(ParameterExpression... parameters)
-
parameter
public static ParameterExpression parameter(Type<?> type)
-
variable
public static ParameterExpression variable(Type<?> type)
-
parameter
public static ParameterExpression parameter(Type<?> type, java.lang.String name)
-
variable
public static ParameterExpression variable(Type<?> type, java.lang.String name)
-
makeUnary
public static UnaryExpression makeUnary(ExpressionType unaryType, Expression operand, Type<?> type)
-
makeUnary
public static UnaryExpression makeUnary(ExpressionType unaryType, Expression operand, Type<?> type, MethodInfo method)
-
negate
public static UnaryExpression negate(Expression expression)
-
negate
public static UnaryExpression negate(Expression expression, MethodInfo method)
-
not
public static UnaryExpression not(Expression expression)
-
not
public static UnaryExpression not(Expression expression, MethodInfo method)
-
isFalse
public static UnaryExpression isFalse(Expression expression)
-
isFalse
public static UnaryExpression isFalse(Expression expression, MethodInfo method)
-
isTrue
public static UnaryExpression isTrue(Expression expression)
-
isTrue
public static UnaryExpression isTrue(Expression expression, MethodInfo method)
-
onesComplement
public static UnaryExpression onesComplement(Expression expression)
-
onesComplement
public static UnaryExpression onesComplement(Expression expression, MethodInfo method)
-
arrayLength
public static UnaryExpression arrayLength(Expression array)
-
convert
public static UnaryExpression convert(Expression expression, Type<?> type)
-
convert
public static UnaryExpression convert(Expression expression, Type<?> type, MethodInfo method)
-
isNull
public static UnaryExpression isNull(Expression expression)
-
isNotNull
public static UnaryExpression isNotNull(Expression expression)
-
makeThrow
public static UnaryExpression makeThrow(Expression expression)
-
makeThrow
public static UnaryExpression makeThrow(Expression value, Type<?> type)
-
unaryPlus
public static UnaryExpression unaryPlus(Expression expression)
-
unaryPlus
public static UnaryExpression unaryPlus(Expression expression, MethodInfo method)
-
box
public static Expression box(Expression expression)
-
unbox
public static UnaryExpression unbox(Expression expression)
-
unbox
public static UnaryExpression unbox(Expression expression, Type<?> type)
-
increment
public static UnaryExpression increment(Expression expression)
-
increment
public static UnaryExpression increment(Expression expression, MethodInfo method)
-
decrement
public static UnaryExpression decrement(Expression expression)
-
decrement
public static UnaryExpression decrement(Expression expression, MethodInfo method)
-
preIncrementAssign
public static UnaryExpression preIncrementAssign(Expression expression)
-
preIncrementAssign
public static UnaryExpression preIncrementAssign(Expression expression, MethodInfo method)
-
postIncrementAssign
public static UnaryExpression postIncrementAssign(Expression expression)
-
postIncrementAssign
public static UnaryExpression postIncrementAssign(Expression expression, MethodInfo method)
-
preDecrementAssign
public static UnaryExpression preDecrementAssign(Expression expression)
-
preDecrementAssign
public static UnaryExpression preDecrementAssign(Expression expression, MethodInfo method)
-
postDecrementAssign
public static UnaryExpression postDecrementAssign(Expression expression)
-
postDecrementAssign
public static UnaryExpression postDecrementAssign(Expression expression, MethodInfo method)
-
block
public static BlockExpression block(Expression arg0, Expression arg1)
-
block
public static BlockExpression block(Expression arg0, Expression arg1, Expression arg2)
-
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
public static BlockExpression block(Expression... expressions)
-
block
public static BlockExpression block(ExpressionList<? extends Expression> expressions)
-
block
public static BlockExpression block(ParameterExpression[] variables, Expression... expressions)
-
block
public static BlockExpression block(ParameterExpressionList variables, Expression... expressions)
-
block
public static BlockExpression block(ParameterExpressionList variables, ExpressionList<? extends Expression> expressions)
-
block
public static BlockExpression block(Type<?> type, Expression... expressions)
-
block
public static BlockExpression block(Type<?> type, ExpressionList<? extends Expression> expressions)
-
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
public static BinaryExpression makeBinary(ExpressionType binaryType, Expression... rest)
-
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
public static BinaryExpression add(Expression left, Expression right)
-
add
public static BinaryExpression add(Expression left, Expression right, MethodInfo method)
-
coalesce
public static BinaryExpression coalesce(Expression left, Expression right)
-
coalesce
public static BinaryExpression coalesce(Expression left, Expression right, LambdaExpression<?> conversion)
-
subtract
public static BinaryExpression subtract(Expression left, Expression right)
-
subtract
public static BinaryExpression subtract(Expression left, Expression right, MethodInfo method)
-
multiply
public static BinaryExpression multiply(Expression left, Expression right)
-
multiply
public static BinaryExpression multiply(Expression left, Expression right, MethodInfo method)
-
divide
public static BinaryExpression divide(Expression left, Expression right)
-
divide
public static BinaryExpression divide(Expression left, Expression right, MethodInfo method)
-
modulo
public static BinaryExpression modulo(Expression left, Expression right)
-
modulo
public static BinaryExpression modulo(Expression left, Expression right, MethodInfo method)
-
leftShift
public static BinaryExpression leftShift(Expression left, Expression right)
-
leftShift
public static BinaryExpression leftShift(Expression left, Expression right, MethodInfo method)
-
rightShift
public static BinaryExpression rightShift(Expression left, Expression right)
-
rightShift
public static BinaryExpression rightShift(Expression left, Expression right, MethodInfo method)
-
unsignedRightShift
public static BinaryExpression unsignedRightShift(Expression left, Expression right)
-
unsignedRightShift
public static BinaryExpression unsignedRightShift(Expression left, Expression right, MethodInfo method)
-
and
public static BinaryExpression and(Expression left, Expression right)
-
and
public static BinaryExpression and(Expression left, Expression right, MethodInfo method)
-
or
public static BinaryExpression or(Expression left, Expression right)
-
or
public static BinaryExpression or(Expression left, Expression right, MethodInfo method)
-
exclusiveOr
public static BinaryExpression exclusiveOr(Expression left, Expression right)
-
exclusiveOr
public static BinaryExpression exclusiveOr(Expression left, Expression right, MethodInfo method)
-
andAlso
public static BinaryExpression andAlso(Expression left, Expression right)
-
andAlso
public static BinaryExpression andAlso(Expression first, Expression... rest)
-
andAlso
public static BinaryExpression andAlso(Expression left, Expression right, MethodInfo method)
-
orElse
public static BinaryExpression orElse(Expression left, Expression right)
-
orElse
public static BinaryExpression orElse(Expression first, Expression... rest)
-
orElse
public static BinaryExpression orElse(Expression left, Expression right, MethodInfo method)
-
lessThan
public static BinaryExpression lessThan(Expression left, Expression right)
-
lessThan
public static BinaryExpression lessThan(Expression left, Expression right, MethodInfo method)
-
lessThanOrEqual
public static BinaryExpression lessThanOrEqual(Expression left, Expression right)
-
lessThanOrEqual
public static BinaryExpression lessThanOrEqual(Expression left, Expression right, MethodInfo method)
-
greaterThan
public static BinaryExpression greaterThan(Expression left, Expression right)
-
greaterThan
public static BinaryExpression greaterThan(Expression left, Expression right, MethodInfo method)
-
greaterThanOrEqual
public static BinaryExpression greaterThanOrEqual(Expression left, Expression right)
-
greaterThanOrEqual
public static BinaryExpression greaterThanOrEqual(Expression left, Expression right, MethodInfo method)
-
equal
public static BinaryExpression equal(Expression left, Expression right)
-
equal
public static BinaryExpression equal(Expression left, Expression right, MethodInfo method)
-
notEqual
public static BinaryExpression notEqual(Expression left, Expression right)
-
notEqual
public static BinaryExpression notEqual(Expression left, Expression right, MethodInfo method)
-
referenceEqual
public static BinaryExpression referenceEqual(Expression left, Expression right)
-
referenceNotEqual
public static BinaryExpression referenceNotEqual(Expression left, Expression right)
-
arrayIndex
public static BinaryExpression arrayIndex(Expression array, Expression index)
-
assign
public static BinaryExpression assign(Expression left, Expression right)
-
addAssign
public static BinaryExpression addAssign(Expression left, Expression right)
-
addAssign
public static BinaryExpression addAssign(Expression left, Expression right, MethodInfo method)
-
addAssign
public static BinaryExpression addAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion)
-
subtractAssign
public static BinaryExpression subtractAssign(Expression left, Expression right)
-
subtractAssign
public static BinaryExpression subtractAssign(Expression left, Expression right, MethodInfo method)
-
subtractAssign
public static BinaryExpression subtractAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion)
-
multiplyAssign
public static BinaryExpression multiplyAssign(Expression left, Expression right)
-
multiplyAssign
public static BinaryExpression multiplyAssign(Expression left, Expression right, MethodInfo method)
-
multiplyAssign
public static BinaryExpression multiplyAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion)
-
divideAssign
public static BinaryExpression divideAssign(Expression left, Expression right)
-
divideAssign
public static BinaryExpression divideAssign(Expression left, Expression right, MethodInfo method)
-
divideAssign
public static BinaryExpression divideAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion)
-
moduloAssign
public static BinaryExpression moduloAssign(Expression left, Expression right)
-
moduloAssign
public static BinaryExpression moduloAssign(Expression left, Expression right, MethodInfo method)
-
moduloAssign
public static BinaryExpression moduloAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion)
-
leftShiftAssign
public static BinaryExpression leftShiftAssign(Expression left, Expression right)
-
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
public static BinaryExpression rightShiftAssign(Expression left, Expression right)
-
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
public static BinaryExpression unsignedRightShiftAssign(Expression left, Expression right)
-
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
public static BinaryExpression orAssign(Expression left, Expression right)
-
orAssign
public static BinaryExpression orAssign(Expression left, Expression right, MethodInfo method)
-
orAssign
public static BinaryExpression orAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion)
-
andAssign
public static BinaryExpression andAssign(Expression left, Expression right)
-
andAssign
public static BinaryExpression andAssign(Expression left, Expression right, MethodInfo method)
-
andAssign
public static BinaryExpression andAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion)
-
exclusiveOrAssign
public static BinaryExpression exclusiveOrAssign(Expression left, Expression right)
-
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
public static TypeBinaryExpression instanceOf(Expression expression, Type<?> type)
-
typeEqual
public static TypeBinaryExpression typeEqual(Expression expression, Type<?> type)
-
lambda
public static LambdaExpression<?> lambda(java.lang.String name, Expression body, ParameterExpression... parameters)
-
lambda
public static LambdaExpression<?> lambda(Expression body, ParameterExpression... parameters)
-
lambda
public static LambdaExpression<?> lambda(Expression body, boolean tailCall, ParameterExpression... parameters)
-
lambda
public static LambdaExpression<?> lambda(java.lang.String name, Expression body, boolean tailCall, ParameterExpression... parameters)
-
lambda
public static LambdaExpression<?> lambda(Expression body, ParameterExpressionList parameters)
-
lambda
public static LambdaExpression<?> lambda(Expression body, boolean tailCall, ParameterExpressionList parameters)
-
lambda
public static <T> LambdaExpression<T> lambda(Type<?> interfaceType, java.lang.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, java.lang.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, java.lang.String name, Expression body, boolean tailCall, ParameterExpressionList parameters)
-
invoke
public static InvocationExpression invoke(Expression expression, Expression... arguments)
-
invoke
public static InvocationExpression invoke(Expression expression, ExpressionList<? extends Expression> arguments)
-
call
public static MethodCallExpression call(MethodInfo method, Expression... arguments)
-
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, java.lang.String methodName, Expression... arguments)
-
call
public static MethodCallExpression call(Expression target, java.lang.String methodName, TypeList typeArguments, Expression... arguments)
-
call
public static MethodCallExpression call(Expression target, java.lang.String methodName, TypeList typeArguments, ExpressionList<? extends Expression> arguments)
-
call
public static MethodCallExpression call(Type<?> declaringType, java.lang.String methodName, Expression... arguments)
-
call
public static MethodCallExpression call(Type<?> declaringType, java.lang.String methodName, TypeList typeArguments, Expression... arguments)
-
call
public static MethodCallExpression call(Type<?> declaringType, java.lang.String methodName, TypeList typeArguments, ExpressionList<? extends Expression> arguments)
-
adaptArguments
private static ExpressionList<? extends Expression> adaptArguments(MethodInfo method, ExpressionList<? extends Expression> arguments)
-
defaultValue
public static DefaultValueExpression defaultValue(Type<?> type)
-
switchCase
public static SwitchCase switchCase(Expression body, Expression... testValues)
-
switchCase
public static SwitchCase switchCase(Expression body, ExpressionList<? extends Expression> testValues)
-
makeSwitch
public static SwitchExpression makeSwitch(Expression switchValue, SwitchCase... cases)
-
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
static <T extends Expression> ExpressionList<T> arrayToList(T[] expressions)
-
arrayToReadOnlyList
static <T> ReadOnlyList<T> arrayToReadOnlyList(T[] items)
-
arrayToList
static ParameterExpressionList arrayToList(ParameterExpression[] parameters)
-
verifyCanRead
private static void verifyCanRead(Expression expression, java.lang.String parameterName)
-
verifyCanRead
private static void verifyCanRead(java.lang.Iterable<? extends Expression> items, java.lang.String parameterName)
-
verifyCanRead
private static void verifyCanRead(Expression[] items, java.lang.String parameterName)
-
verifyCanWrite
private static void verifyCanWrite(Expression expression, java.lang.String parameterName)
-
verifyCanWrite
private static void verifyCanWrite(java.lang.Iterable<? extends Expression> items, java.lang.String parameterName)
-
validateVariables
static void validateVariables(ParameterExpressionList varList, java.lang.String collectionName)
-
getMethodBasedUnaryOperator
private static UnaryExpression getMethodBasedUnaryOperator(ExpressionType unaryType, Expression operand, MethodInfo method)
-
getMethodBasedUnaryOperatorOrThrow
private static UnaryExpression getMethodBasedUnaryOperatorOrThrow(ExpressionType unaryType, java.lang.String methodName, Expression operand)
-
getMethodBasedUnaryOperatorOrThrow
private static UnaryExpression getMethodBasedUnaryOperatorOrThrow(ExpressionType unaryType, Expression operand, java.lang.String... methodNames)
-
getMethodBasedUnaryOperator
private static UnaryExpression getMethodBasedUnaryOperator(ExpressionType unaryType, java.lang.String methodName, Expression operand)
-
validateOperator
private static void validateOperator(MethodInfo method)
-
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
static boolean parameterIsAssignable(Type<?> parameterType, Type<?> argumentType)
-
getMethodValidated
static MethodInfo getMethodValidated(Type<?> type, java.lang.String name, java.util.Set<BindingFlags> bindingFlags, CallingConvention callingConvention, Type<?>... parameterTypes)
-
methodArgumentsMatch
static boolean methodArgumentsMatch(MethodInfo method, Type<?>... argumentTypes)
-
ensureUnmodifiable
static <T> java.util.List<T> ensureUnmodifiable(java.util.List<T> list)
-
returnObject
static <T extends Expression> T returnObject(java.lang.Class<T> clazz, java.lang.Object objectOrCollection)
-
aggregateBinary
private static BinaryExpression aggregateBinary(ExpressionType binaryType, ImmutableList<Expression> operands)
-
verifyTypeBinaryExpressionOperand
private static void verifyTypeBinaryExpressionOperand(Expression expression, Type<?> type)
-
getInvokeMethod
static MethodInfo getInvokeMethod(Expression expression)
-
getInvokeMethod
static MethodInfo getInvokeMethod(Type<?> interfaceType, boolean throwOnError)
-
getEqualityComparisonOperator
private static BinaryExpression getEqualityComparisonOperator(ExpressionType binaryType, java.lang.String opName, Expression left, Expression right)
-
getBinaryOperatorMethod
private static MethodInfo getBinaryOperatorMethod(ExpressionType binaryType, Type<?> leftType, Type<?> rightType, java.lang.String name)
-
getBinaryOperatorStaticMethod
private static MethodInfo getBinaryOperatorStaticMethod(ExpressionType binaryType, Type<?> leftType, Type<?> rightType, java.lang.String name)
-
getMethodBasedBinaryOperator
private static BinaryExpression getMethodBasedBinaryOperator(ExpressionType binaryType, java.lang.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, java.lang.String name, Expression left, Expression right)
-
getMethodBasedAssignOperator
private static BinaryExpression getMethodBasedAssignOperator(ExpressionType binaryType, java.lang.String name, Expression left, Expression right, LambdaExpression<?> conversion)
-
getMethodBasedAssignOperatorOrThrow
private static BinaryExpression getMethodBasedAssignOperatorOrThrow(ExpressionType binaryType, java.lang.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
private static boolean isNullConstant(Expression e)
-
isNullComparison
private static boolean isNullComparison(Expression left, Expression right)
-
validateStaticOrInstanceMethod
private static void validateStaticOrInstanceMethod(Expression instance, MethodInfo method)
-
validateCallTargetType
private static void validateCallTargetType(Type<?> targetType, MethodInfo method)
-
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, java.lang.String targetParameter, java.lang.String valueParameter)
-
validateGotoType
private static void validateGotoType(Type<?> expectedType, Expression value, java.lang.String valueParameter)
-
validateTryAndCatchHaveSameType
private static void validateTryAndCatchHaveSameType(Type<?> type, Expression tryBody, ReadOnlyList<CatchBlock> handlers)
-
validateSwitchCaseType
private static void validateSwitchCaseType(Expression caseBody, boolean customType, Type<?> resultType, java.lang.String parameterName)
-
findField
private static FieldInfo findField(Type<?> declaringType, java.lang.String fieldName, java.util.Set<BindingFlags> flags)
-
types
private static Type<?>[] types(Expression... expressions)
-
types
private static Type<?>[] types(java.lang.Iterable<? extends Expression> expressions)
-
findMethod
private static MethodInfo findMethod(Type<?> type, java.lang.String methodName, TypeList typeArguments, ExpressionList<? extends Expression> arguments, java.util.Set<BindingFlags> flags)
-
findBestMethod
private static int findBestMethod(MemberList<?> methods, TypeList typeArgs, ExpressionList<? extends Expression> arguments)
-
isCompatible
private static boolean isCompatible(MethodBase m, ExpressionList<? extends Expression> arguments)
-
applyTypeArgs
private static MethodInfo applyTypeArgs(MethodInfo m, TypeList typeArgs)
-
performBinaryNumericPromotion
static Type<?> performBinaryNumericPromotion(Type<?> leftType, Type<?> rightType)
-
-