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
ConstructorsModifierConstructorDescriptionprotected///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -
Method Summary
Modifier and TypeMethodDescriptionprotected Expressionaccept(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 BinaryExpressionadd(Expression left, Expression right) static BinaryExpressionadd(Expression left, Expression right, MethodInfo method) static BinaryExpressionaddAssign(Expression left, Expression right) static BinaryExpressionaddAssign(Expression left, Expression right, MethodInfo method) static BinaryExpressionaddAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) private static BinaryExpressionaggregateBinary(ExpressionType binaryType, ImmutableList<Expression> operands) static BinaryExpressionand(Expression left, Expression right) static BinaryExpressionand(Expression left, Expression right, MethodInfo method) static BinaryExpressionandAlso(Expression left, Expression right) static BinaryExpressionandAlso(Expression first, Expression... rest) static BinaryExpressionandAlso(Expression left, Expression right, MethodInfo method) static BinaryExpressionandAssign(Expression left, Expression right) static BinaryExpressionandAssign(Expression left, Expression right, MethodInfo method) static BinaryExpressionandAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) private static MethodInfoapplyTypeArgs(MethodInfo m, TypeList typeArgs) static BinaryExpressionarrayIndex(Expression array, Expression index) static UnaryExpressionarrayLength(Expression array) (package private) static ParameterExpressionListarrayToList(ParameterExpression[] parameters) (package private) static <T extends Expression>
ExpressionList<T> arrayToList(T[] expressions) (package private) static <T> ReadOnlyList<T> arrayToReadOnlyList(T[] items) static BinaryExpressionassign(Expression left, Expression right) static Expressionstatic BlockExpressionblock(Expression... expressions) static BlockExpressionblock(ExpressionList<? extends Expression> expressions) static BlockExpressionblock(Expression arg0, Expression arg1) static BlockExpressionblock(Expression arg0, Expression arg1, Expression arg2) static BlockExpressionblock(Expression arg0, Expression arg1, Expression arg2, Expression arg3) static BlockExpressionblock(Expression arg0, Expression arg1, Expression arg2, Expression arg3, Expression arg4) static BlockExpressionblock(ParameterExpression[] variables, Expression... expressions) static BlockExpressionblock(ParameterExpressionList variables, Expression... expressions) static BlockExpressionblock(ParameterExpressionList variables, ExpressionList<? extends Expression> expressions) static BlockExpressionblock(Type<?> type, Expression... expressions) static BlockExpressionblock(Type<?> type, ExpressionList<? extends Expression> expressions) static BlockExpressionblock(Type<?> type, ParameterExpression[] variables, Expression... expressions) static BlockExpressionblock(Type<?> type, ParameterExpressionList variables, Expression... expressions) static BlockExpressionblock(Type<?> type, ParameterExpressionList variables, ExpressionList<? extends Expression> expressions) static Expressionbox(Expression expression) static MethodCallExpressioncall(Expression target, MethodInfo method, Expression... arguments) static MethodCallExpressioncall(Expression target, MethodInfo method, ExpressionList<? extends Expression> arguments) static MethodCallExpressioncall(Expression target, String methodName, Expression... arguments) static MethodCallExpressioncall(Expression target, String methodName, TypeList typeArguments, Expression... arguments) static MethodCallExpressioncall(Expression target, String methodName, TypeList typeArguments, ExpressionList<? extends Expression> arguments) static MethodCallExpressioncall(MethodInfo method, Expression... arguments) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////static MethodCallExpressioncall(MethodInfo method, ExpressionList<? extends Expression> arguments) static MethodCallExpressioncall(Type<?> declaringType, String methodName, Expression... arguments) static MethodCallExpressioncall(Type<?> declaringType, String methodName, TypeList typeArguments, Expression... arguments) static MethodCallExpressioncall(Type<?> declaringType, String methodName, TypeList typeArguments, ExpressionList<? extends Expression> arguments) booleanIndicates that the node can be reduced to a simpler node.static ConstantExpressionclassConstant(Type<?> value) static BinaryExpressioncoalesce(Expression left, Expression right) static BinaryExpressioncoalesce(Expression left, Expression right, LambdaExpression<?> conversion) static ConcatExpressionconcat(ExpressionList<? extends Expression> operands) static ConcatExpressionconcat(Expression first, Expression second) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////static ConcatExpressionconcat(Expression first, Expression second, Expression... operands) static ConditionalExpressioncondition(Expression test, Expression ifTrue, Expression ifFalse) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////static ConditionalExpressioncondition(Expression test, Expression ifTrue, Expression ifFalse, Type<?> type) static ConstantExpression/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////static ConstantExpressionstatic UnaryExpressionconvert(Expression expression, Type<?> type) static UnaryExpressionconvert(Expression expression, Type<?> type, MethodInfo method) static UnaryExpressiondecrement(Expression expression) static UnaryExpressiondecrement(Expression expression, MethodInfo method) static DefaultValueExpressiondefaultValue(Type<?> type) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////static BinaryExpressiondivide(Expression left, Expression right) static BinaryExpressiondivide(Expression left, Expression right, MethodInfo method) static BinaryExpressiondivideAssign(Expression left, Expression right) static BinaryExpressiondivideAssign(Expression left, Expression right, MethodInfo method) static BinaryExpressiondivideAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) static Expressionempty()/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////(package private) static <T> List<T> ensureUnmodifiable(List<T> list) static BinaryExpressionequal(Expression left, Expression right) static BinaryExpressionequal(Expression left, Expression right, MethodInfo method) static BinaryExpressionexclusiveOr(Expression left, Expression right) static BinaryExpressionexclusiveOr(Expression left, Expression right, MethodInfo method) static BinaryExpressionexclusiveOrAssign(Expression left, Expression right) static BinaryExpressionexclusiveOrAssign(Expression left, Expression right, MethodInfo method) static BinaryExpressionexclusiveOrAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) static MemberExpressionfield(Expression target, FieldInfo field) static MemberExpressionfield(Expression target, String fieldName) static MemberExpressionstatic MemberExpressionprivate static intfindBestMethod(MemberList<?> methods, TypeList typeArgs, ExpressionList<? extends Expression> arguments) private static FieldInfofindField(Type<?> declaringType, String fieldName, Set<BindingFlags> flags) private static MethodInfofindMethod(Type<?> type, String methodName, TypeList typeArguments, ExpressionList<? extends Expression> arguments, Set<BindingFlags> flags) static ForEachExpressionforEach(ParameterExpression variable, Expression sequence, Expression body) static ForEachExpressionforEach(ParameterExpression variable, Expression sequence, Expression body, LabelTarget breakTarget) static ForEachExpressionforEach(ParameterExpression variable, Expression sequence, Expression body, LabelTarget breakTarget, LabelTarget continueTarget) private static MethodInfogetBinaryOperatorMethod(ExpressionType binaryType, Type<?> leftType, Type<?> rightType, String name) private static MethodInfogetBinaryOperatorStaticMethod(ExpressionType binaryType, Type<?> leftType, Type<?> rightType, String name) private static BinaryExpressiongetCompareMethodBasedBinaryOperator(ExpressionType binaryType, Expression left, Expression right) private static BinaryExpressiongetComparisonOperator(ExpressionType binaryType, Expression left, Expression right) final Stringprivate static BinaryExpressiongetEqualityComparisonOperator(ExpressionType binaryType, String opName, Expression left, Expression right) private static BinaryExpressiongetEqualsMethodBasedBinaryOperator(ExpressionType binaryType, Expression left, Expression right) (package private) static MethodInfogetInvokeMethod(Expression expression) (package private) static MethodInfogetInvokeMethod(Type<?> interfaceType, boolean throwOnError) private static BinaryExpressiongetMethodBasedAssignOperator(ExpressionType binaryType, Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) private static BinaryExpressiongetMethodBasedAssignOperator(ExpressionType binaryType, String name, Expression left, Expression right, LambdaExpression<?> conversion) private static BinaryExpressiongetMethodBasedAssignOperatorOrThrow(ExpressionType binaryType, String name, Expression left, Expression right, LambdaExpression<?> conversion) private static BinaryExpressiongetMethodBasedBinaryOperator(ExpressionType binaryType, Expression left, Expression right, MethodInfo method) private static BinaryExpressiongetMethodBasedBinaryOperator(ExpressionType binaryType, String name, Expression left, Expression right) private static BinaryExpressiongetMethodBasedBinaryOperatorOrThrow(ExpressionType binaryType, String name, Expression left, Expression right) private static UnaryExpressiongetMethodBasedCoercion(ExpressionType coercionType, Expression expression, Type<?> convertToType) private static UnaryExpressiongetMethodBasedCoercionOperator(ExpressionType unaryType, Expression operand, Type<?> convertToType, MethodInfo method) private static UnaryExpressiongetMethodBasedCoercionOrThrow(ExpressionType coercionType, Expression expression, Type<?> convertToType) private static UnaryExpressiongetMethodBasedUnaryOperator(ExpressionType unaryType, Expression operand, MethodInfo method) private static UnaryExpressiongetMethodBasedUnaryOperator(ExpressionType unaryType, String methodName, Expression operand) private static UnaryExpressiongetMethodBasedUnaryOperatorOrThrow(ExpressionType unaryType, Expression operand, String... methodNames) private static UnaryExpressiongetMethodBasedUnaryOperatorOrThrow(ExpressionType unaryType, String methodName, Expression operand) (package private) static MethodInfogetMethodValidated(Type<?> type, String name, Set<BindingFlags> bindingFlags, CallingConvention callingConvention, Type<?>... parameterTypes) Returns the node type of thisExpression.private static BinaryExpressiongetStaticMethodBasedBinaryOperator(ExpressionType binaryType, Expression left, Expression right, MethodInfo method) Type<?> getType()Gets the static type of the expression that thisExpressionrepresents.static BinaryExpressiongreaterThan(Expression left, Expression right) static BinaryExpressiongreaterThan(Expression left, Expression right, MethodInfo method) static BinaryExpressiongreaterThanOrEqual(Expression left, Expression right) static BinaryExpressiongreaterThanOrEqual(Expression left, Expression right, MethodInfo method) static ConditionalExpressionifThen(Expression test, Expression ifTrue) static ConditionalExpressionifThenElse(Expression test, Expression ifTrue, Expression ifFalse) static UnaryExpressionincrement(Expression expression) static UnaryExpressionincrement(Expression expression, MethodInfo method) static TypeBinaryExpressioninstanceOf(Expression expression, Type<?> type) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////static InvocationExpressioninvoke(Expression expression, Expression... arguments) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////static InvocationExpressioninvoke(Expression expression, ExpressionList<? extends Expression> arguments) private static booleanisCompatible(MethodBase m, ExpressionList<? extends Expression> arguments) static UnaryExpressionisFalse(Expression expression) static UnaryExpressionisFalse(Expression expression, MethodInfo method) static UnaryExpressionisNotNull(Expression expression) static UnaryExpressionisNull(Expression expression) private static booleanisNullComparison(Expression left, Expression right) private static booleanstatic UnaryExpressionisTrue(Expression expression) static UnaryExpressionisTrue(Expression expression, MethodInfo method) static LabelTargetlabel()/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////static LabelExpressionlabel(LabelTarget target) static LabelExpressionlabel(LabelTarget target, Expression defaultValue) static LabelTargetstatic LabelTargetstatic LabelTargetstatic 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 BinaryExpressionleftShift(Expression left, Expression right) static BinaryExpressionleftShift(Expression left, Expression right, MethodInfo method) static BinaryExpressionleftShiftAssign(Expression left, Expression right) static BinaryExpressionleftShiftAssign(Expression left, Expression right, MethodInfo method) static BinaryExpressionleftShiftAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) static BinaryExpressionlessThan(Expression left, Expression right) static BinaryExpressionlessThan(Expression left, Expression right, MethodInfo method) static BinaryExpressionlessThanOrEqual(Expression left, Expression right) static BinaryExpressionlessThanOrEqual(Expression left, Expression right, MethodInfo method) static LoopExpressionloop(Expression body) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////static LoopExpressionloop(Expression body, LabelTarget breakTarget) static LoopExpressionloop(Expression body, LabelTarget breakTarget, LabelTarget continueLabel) static BinaryExpressionmakeBinary(ExpressionType binaryType, Expression... rest) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////static BinaryExpressionmakeBinary(ExpressionType binaryType, Expression left, Expression right) static BinaryExpressionmakeBinary(ExpressionType binaryType, Expression first, Expression... rest) static BinaryExpressionmakeBinary(ExpressionType binaryType, Expression left, Expression right, MethodInfo method) static BinaryExpressionmakeBinary(ExpressionType binaryType, Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) static GotoExpressionmakeBreak(LabelTarget target) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////static GotoExpressionmakeBreak(LabelTarget target, Expression value) static GotoExpressionmakeBreak(LabelTarget target, Expression value, Type<?> type) static GotoExpressionmakeBreak(LabelTarget target, Type<?> type) static CatchBlockmakeCatch(ParameterExpression variable, Expression body) static CatchBlockmakeCatch(ParameterExpression variable, Expression body, Expression filter) static CatchBlockmakeCatch(Type<?> type, Expression body) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////static CatchBlockmakeCatch(Type<?> type, Expression body, Expression filter) static CatchBlockmakeCatch(Type<?> type, ParameterExpression variable, Expression body) static CatchBlockmakeCatch(Type<?> type, ParameterExpression variable, Expression body, Expression filter) static GotoExpressionmakeContinue(LabelTarget target) static GotoExpressionmakeContinue(LabelTarget target, Type<?> type) static ForExpressionmakeFor(ParameterExpression variable, Expression initializer, Expression test, Expression step, Expression body) static ForExpressionmakeFor(ParameterExpression variable, Expression initializer, Expression test, Expression step, Expression body, LabelTarget breakTarget) static ForExpressionmakeFor(ParameterExpression variable, Expression initializer, Expression test, Expression step, Expression body, LabelTarget breakTarget, LabelTarget continueTarget) static GotoExpressionmakeGoto(GotoExpressionKind kind, LabelTarget target, Expression value, Type<?> type) static GotoExpressionmakeGoto(LabelTarget target) static GotoExpressionmakeGoto(LabelTarget target, Expression value) static GotoExpressionmakeGoto(LabelTarget target, Expression value, Type<?> type) static GotoExpressionmakeGoto(LabelTarget target, Type<?> type) static MemberExpressionmakeMemberAccess(Expression target, MemberInfo member) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////static NewExpressionmakeNew(ConstructorInfo constructor) static NewExpressionmakeNew(ConstructorInfo constructor, Expression... parameters) static NewExpressionmakeNew(ConstructorInfo constructor, ExpressionList<? extends Expression> parameters) static NewExpressionmakeNew(Type<?> type, Expression... parameters) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////private static UnaryExpressionmakeOpAssignUnary(ExpressionType kind, Expression expression, MethodInfo method) static GotoExpressionmakeReturn(LabelTarget target) static GotoExpressionmakeReturn(LabelTarget target, Expression value) static GotoExpressionmakeReturn(LabelTarget target, Expression value, Type<?> type) static GotoExpressionmakeReturn(LabelTarget target, Type<?> type) static SwitchExpressionmakeSwitch(Expression switchValue, Expression defaultBody, SwitchCase... cases) static SwitchExpressionmakeSwitch(Expression switchValue, Expression defaultBody, MethodInfo comparison, ReadOnlyList<SwitchCase> cases) static SwitchExpressionmakeSwitch(Expression switchValue, Expression defaultBody, MethodInfo comparison, SwitchCase... cases) static SwitchExpressionmakeSwitch(Expression switchValue, SwitchCase... cases) static SwitchExpressionmakeSwitch(Expression switchValue, SwitchOptions options, Expression defaultBody, SwitchCase... cases) static SwitchExpressionmakeSwitch(Expression switchValue, SwitchOptions options, Expression defaultBody, MethodInfo comparison, ReadOnlyList<SwitchCase> cases) static SwitchExpressionmakeSwitch(Expression switchValue, SwitchOptions options, Expression defaultBody, MethodInfo comparison, SwitchCase... cases) static SwitchExpressionmakeSwitch(Expression switchValue, SwitchOptions options, SwitchCase... cases) static SwitchExpressionmakeSwitch(Type<?> type, Expression switchValue, Expression defaultBody, SwitchCase... cases) static SwitchExpressionmakeSwitch(Type<?> type, Expression switchValue, Expression defaultBody, MethodInfo comparison, SwitchCase... cases) static SwitchExpressionmakeSwitch(Type<?> type, Expression switchValue, SwitchOptions options, Expression defaultBody, SwitchCase... cases) static SwitchExpressionmakeSwitch(Type<?> type, Expression switchValue, SwitchOptions options, Expression defaultBody, MethodInfo comparison, ReadOnlyList<SwitchCase> cases) static SwitchExpressionmakeSwitch(Type<?> type, Expression switchValue, SwitchOptions options, Expression defaultBody, MethodInfo comparison, SwitchCase... cases) static UnaryExpressionmakeThrow(Expression expression) static UnaryExpressionmakeThrow(Expression value, Type<?> type) static TryExpressionmakeTry(Type<?> type, Expression body, ReadOnlyList<CatchBlock> catchBlocks, Expression finallyBlock) static TryExpressionmakeTry(Type<?> type, Expression body, CatchBlock... handlers) static TryExpressionmakeTry(Type<?> type, Expression body, Expression finallyBlock, CatchBlock... handlers) static UnaryExpressionmakeUnary(ExpressionType unaryType, Expression operand, Type<?> type) static UnaryExpressionmakeUnary(ExpressionType unaryType, Expression operand, Type<?> type, MethodInfo method) (package private) static booleanmethodArgumentsMatch(MethodInfo method, Type<?>... argumentTypes) static BinaryExpressionmodulo(Expression left, Expression right) static BinaryExpressionmodulo(Expression left, Expression right, MethodInfo method) static BinaryExpressionmoduloAssign(Expression left, Expression right) static BinaryExpressionmoduloAssign(Expression left, Expression right, MethodInfo method) static BinaryExpressionmoduloAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) static BinaryExpressionmultiply(Expression left, Expression right) static BinaryExpressionmultiply(Expression left, Expression right, MethodInfo method) static BinaryExpressionmultiplyAssign(Expression left, Expression right) static BinaryExpressionmultiplyAssign(Expression left, Expression right, MethodInfo method) static BinaryExpressionmultiplyAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) static UnaryExpressionnegate(Expression expression) static UnaryExpressionnegate(Expression expression, MethodInfo method) static NewArrayExpressionnewArrayBounds(Type<?> elementType, Expression dimension) static NewArrayExpressionnewArrayInit(Type<?> elementType, Expression... initializers) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////static NewArrayExpressionnewArrayInit(Type<?> elementType, ExpressionList<? extends Expression> initializers) static UnaryExpressionnot(Expression expression) static UnaryExpressionnot(Expression expression, MethodInfo method) static BinaryExpressionnotEqual(Expression left, Expression right) static BinaryExpressionnotEqual(Expression left, Expression right, MethodInfo method) static UnaryExpressiononesComplement(Expression expression) static UnaryExpressiononesComplement(Expression expression, MethodInfo method) static BinaryExpressionor(Expression left, Expression right) static BinaryExpressionor(Expression left, Expression right, MethodInfo method) static BinaryExpressionorAssign(Expression left, Expression right) static BinaryExpressionorAssign(Expression left, Expression right, MethodInfo method) static BinaryExpressionorAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) static BinaryExpressionorElse(Expression left, Expression right) static BinaryExpressionorElse(Expression first, Expression... rest) static BinaryExpressionorElse(Expression left, Expression right, MethodInfo method) static ParameterExpressionstatic ParameterExpression(package private) static booleanparameterIsAssignable(Type<?> parameterType, Type<?> argumentType) static ParameterExpressionListparameters(ParameterExpression... parameters) (package private) static Type<?> performBinaryNumericPromotion(Type<?> leftType, Type<?> rightType) static UnaryExpressionpostDecrementAssign(Expression expression) static UnaryExpressionpostDecrementAssign(Expression expression, MethodInfo method) static UnaryExpressionpostIncrementAssign(Expression expression) static UnaryExpressionpostIncrementAssign(Expression expression, MethodInfo method) static UnaryExpressionpreDecrementAssign(Expression expression) static UnaryExpressionpreDecrementAssign(Expression expression, MethodInfo method) static UnaryExpressionpreIncrementAssign(Expression expression) static UnaryExpressionpreIncrementAssign(Expression expression, MethodInfo method) reduce()Reduces this node to a simpler expression.final ExpressionReduces this node to a simpler expression.final ExpressionReduces the expression to a known node type (i.e.static BinaryExpressionreferenceEqual(Expression left, Expression right) static BinaryExpressionreferenceNotEqual(Expression left, Expression right) (package private) static <T extends Expression>
TreturnObject(Class<T> clazz, Object objectOrCollection) static BinaryExpressionrightShift(Expression left, Expression right) static BinaryExpressionrightShift(Expression left, Expression right, MethodInfo method) static BinaryExpressionrightShiftAssign(Expression left, Expression right) static BinaryExpressionrightShiftAssign(Expression left, Expression right, MethodInfo method) static BinaryExpressionrightShiftAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) static RuntimeVariablesExpressionruntimeVariables(ParameterExpression... variables) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////static RuntimeVariablesExpressionruntimeVariables(ParameterExpressionList variables) static Expressionstatic BinaryExpressionsubtract(Expression left, Expression right) static BinaryExpressionsubtract(Expression left, Expression right, MethodInfo method) static BinaryExpressionsubtractAssign(Expression left, Expression right) static BinaryExpressionsubtractAssign(Expression left, Expression right, MethodInfo method) static BinaryExpressionsubtractAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) static SwitchCaseswitchCase(Expression body, Expression... testValues) /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////static SwitchCaseswitchCase(Expression body, ExpressionList<? extends Expression> testValues) toString()static TryExpressiontryCatch(Expression body, CatchBlock... handlers) static TryExpressiontryCatchFinally(Expression body, Expression finallyBlock, CatchBlock... handlers) static TryExpressiontryFinally(Expression body, Expression finallyBlock) static TypeBinaryExpressiontypeEqual(Expression expression, Type<?> type) private static Type<?>[]types(Expression... expressions) private static Type<?>[]types(Iterable<? extends Expression> expressions) static UnaryExpressionunaryPlus(Expression expression) static UnaryExpressionunaryPlus(Expression expression, MethodInfo method) static UnaryExpressionunbox(Expression expression) static UnaryExpressionunbox(Expression expression, Type<?> type) static BinaryExpressionunsignedRightShift(Expression left, Expression right) static BinaryExpressionunsignedRightShift(Expression left, Expression right, MethodInfo method) static BinaryExpressionunsignedRightShiftAssign(Expression left, Expression right) static BinaryExpressionunsignedRightShiftAssign(Expression left, Expression right, MethodInfo method) static BinaryExpressionunsignedRightShiftAssign(Expression left, Expression right, MethodInfo method, LambdaExpression<?> conversion) private static voidvalidateArgumentCount(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 voidvalidateCallTargetType(Type<?> targetType, MethodInfo method) private static Type<?> validateCoalesceArgumentTypes(Type<?> left, Type<?> right) private static voidvalidateGoto(LabelTarget target, Expression value, String targetParameter, String valueParameter) private static voidvalidateGotoType(Type<?> expectedType, Expression value, String valueParameter) private static <T> voidvalidateLambdaArgs(Type<T> interfaceType, Expression body, ParameterExpressionList parameters) private static <T extends Expression>
TvalidateOneArgument(MethodBase method, ExpressionType nodeKind, T arg, Type<?> parameterType) private static voidvalidateOpAssignConversionLambda(LambdaExpression<?> conversion, Expression left, MethodInfo method, ExpressionType nodeType) private static voidvalidateOperator(MethodInfo method) private static voidvalidateStaticOrInstanceMethod(Expression instance, MethodInfo method) private static voidvalidateSwitchCaseType(Expression caseBody, boolean customType, Type<?> resultType, String parameterName) private static voidvalidateTryAndCatchHaveSameType(Type<?> type, Expression tryBody, ReadOnlyList<CatchBlock> handlers) (package private) static voidvalidateVariables(ParameterExpressionList varList, String collectionName) static ParameterExpressionstatic ParameterExpressionstatic ParameterExpressionListvariables(ParameterExpression... parameters) private static voidverifyCanRead(Expression[] items, String parameterName) private static voidverifyCanRead(Expression expression, String parameterName) private static voidverifyCanRead(Iterable<? extends Expression> items, String parameterName) private static voidverifyCanWrite(Expression expression, String parameterName) private static voidverifyCanWrite(Iterable<? extends Expression> items, String parameterName) private static voidverifyTypeBinaryExpressionOperand(Expression expression, Type<?> type) protected ExpressionvisitChildren(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
ExpressionTypethat represents this expression.
-
getType
Gets the static type of the expression that thisExpressionrepresents.- Returns:
- the
Typethat 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:
trueif 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,BinaryExpressionwill 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
-