Package com.strobel.expressions
Class SwitchExpression
- java.lang.Object
-
- com.strobel.expressions.Expression
-
- com.strobel.expressions.SwitchExpression
-
public final class SwitchExpression extends Expression
-
-
Field Summary
Fields Modifier and Type Field Description private ReadOnlyList<SwitchCase>
_cases
private MethodInfo
_comparison
private Expression
_defaultBody
private SwitchOptions
_options
private Expression
_switchValue
private Type
_type
-
Constructor Summary
Constructors Constructor Description SwitchExpression(Type type, Expression switchValue, Expression defaultBody, MethodInfo comparison, ReadOnlyList<SwitchCase> cases, SwitchOptions options)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Expression
accept(ExpressionVisitor visitor)
Dispatches to the specific visit method for this node type.boolean
canReduce()
Indicates that the node can be reduced to a simpler node.ReadOnlyList<SwitchCase>
getCases()
MethodInfo
getComparison()
Expression
getDefaultBody()
ExpressionType
getNodeType()
Returns the node type of thisExpression
.SwitchOptions
getOptions()
Expression
getSwitchValue()
Type<?>
getType()
Gets the static type of the expression that thisExpression
represents.Expression
reduce()
Reduces this node to a simpler expression.private Expression
rewriteEnumSwitch()
private Expression
rewriteStringSwitch()
SwitchExpression
update(Expression switchValue, ReadOnlyList<SwitchCase> cases, Expression defaultBody, SwitchOptions options)
-
Methods inherited from class com.strobel.expressions.Expression
add, add, addAssign, addAssign, addAssign, and, and, andAlso, andAlso, andAlso, andAssign, andAssign, andAssign, arrayIndex, arrayLength, arrayToList, arrayToList, arrayToReadOnlyList, assign, base, block, block, block, block, block, block, block, block, block, block, block, block, block, block, box, call, call, call, call, call, call, call, call, call, call, classConstant, coalesce, coalesce, concat, concat, concat, condition, condition, constant, constant, convert, convert, decrement, decrement, defaultValue, divide, divide, divideAssign, divideAssign, divideAssign, empty, ensureUnmodifiable, equal, equal, exclusiveOr, exclusiveOr, exclusiveOrAssign, exclusiveOrAssign, exclusiveOrAssign, field, field, field, field, forEach, forEach, forEach, getDebugView, getInvokeMethod, getInvokeMethod, getMethodValidated, greaterThan, greaterThan, greaterThanOrEqual, greaterThanOrEqual, ifThen, ifThenElse, increment, increment, instanceOf, invoke, invoke, isFalse, isFalse, isNotNull, isNull, isTrue, isTrue, label, label, label, label, label, label, lambda, lambda, lambda, lambda, lambda, lambda, lambda, lambda, lambda, lambda, lambda, lambda, lambda, leftShift, leftShift, leftShiftAssign, leftShiftAssign, leftShiftAssign, lessThan, lessThan, lessThanOrEqual, lessThanOrEqual, loop, loop, loop, makeBinary, makeBinary, makeBinary, makeBinary, makeBinary, makeBreak, makeBreak, makeBreak, makeBreak, makeCatch, makeCatch, makeCatch, makeCatch, makeCatch, makeCatch, makeContinue, makeContinue, makeFor, makeFor, makeFor, makeGoto, makeGoto, makeGoto, makeGoto, makeGoto, makeMemberAccess, makeNew, makeNew, makeNew, makeNew, makeReturn, makeReturn, makeReturn, makeReturn, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeSwitch, makeThrow, makeThrow, makeTry, makeTry, makeTry, makeUnary, makeUnary, methodArgumentsMatch, modulo, modulo, moduloAssign, moduloAssign, moduloAssign, multiply, multiply, multiplyAssign, multiplyAssign, multiplyAssign, negate, negate, newArrayBounds, newArrayInit, newArrayInit, not, not, notEqual, notEqual, onesComplement, onesComplement, or, or, orAssign, orAssign, orAssign, orElse, orElse, orElse, parameter, parameter, parameterIsAssignable, parameters, performBinaryNumericPromotion, postDecrementAssign, postDecrementAssign, postIncrementAssign, postIncrementAssign, preDecrementAssign, preDecrementAssign, preIncrementAssign, preIncrementAssign, reduceAndCheck, reduceExtensions, referenceEqual, referenceNotEqual, returnObject, rightShift, rightShift, rightShiftAssign, rightShiftAssign, rightShiftAssign, runtimeVariables, runtimeVariables, self, subtract, subtract, subtractAssign, subtractAssign, subtractAssign, switchCase, switchCase, toString, tryCatch, tryCatchFinally, tryFinally, typeEqual, unaryPlus, unaryPlus, unbox, unbox, unsignedRightShift, unsignedRightShift, unsignedRightShiftAssign, unsignedRightShiftAssign, unsignedRightShiftAssign, validateVariables, variable, variable, variables, visitChildren
-
-
-
-
Field Detail
-
_type
private final Type _type
-
_switchValue
private final Expression _switchValue
-
_cases
private final ReadOnlyList<SwitchCase> _cases
-
_defaultBody
private final Expression _defaultBody
-
_comparison
private final MethodInfo _comparison
-
_options
private final SwitchOptions _options
-
-
Constructor Detail
-
SwitchExpression
public SwitchExpression(Type type, Expression switchValue, Expression defaultBody, MethodInfo comparison, ReadOnlyList<SwitchCase> cases, SwitchOptions options)
-
-
Method Detail
-
getSwitchValue
public final Expression getSwitchValue()
-
getCases
public final ReadOnlyList<SwitchCase> getCases()
-
getDefaultBody
public final Expression getDefaultBody()
-
getComparison
public final MethodInfo getComparison()
-
getOptions
public final SwitchOptions getOptions()
-
getType
public final Type<?> getType()
Description copied from class:Expression
Gets the static type of the expression that thisExpression
represents.- Overrides:
getType
in classExpression
- Returns:
- the
Type
that represents the static type of the expression.
-
getNodeType
public final ExpressionType getNodeType()
Description copied from class:Expression
Returns the node type of thisExpression
.- Overrides:
getNodeType
in classExpression
- Returns:
- the
ExpressionType
that represents this expression.
-
accept
protected final Expression accept(ExpressionVisitor visitor)
Description copied from class:Expression
Dispatches to the specific visit method for this node type. For example,BinaryExpression
will call intoExpressionVisitor.visitBinary()
.- Overrides:
accept
in classExpression
- Parameters:
visitor
- the visitor to visit this node.- Returns:
- the result of visiting this node.
-
update
public final SwitchExpression update(Expression switchValue, ReadOnlyList<SwitchCase> cases, Expression defaultBody, SwitchOptions options)
-
canReduce
public boolean canReduce()
Description copied from class:Expression
Indicates that the node can be reduced to a simpler node. If this returnstrue
,reduce()
can be called to produce the reduced form.- Overrides:
canReduce
in classExpression
- Returns:
true
if the node can be reduced; otherwise,false
.
-
reduce
public Expression reduce()
Description copied from class:Expression
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.- Overrides:
reduce
in classExpression
- Returns:
- the reduced expression.
-
rewriteStringSwitch
private Expression rewriteStringSwitch()
-
rewriteEnumSwitch
private Expression rewriteEnumSwitch()
-
-