Class RedundantCastUtility.IsRedundantVisitor
java.lang.Object
com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor<Void,Void>
com.strobel.decompiler.languages.java.utilities.RedundantCastUtility.IsRedundantVisitor
- All Implemented Interfaces:
IAstVisitor<Void,
Void>
- Direct Known Subclasses:
RedundantCastUtility.CastCollector
- Enclosing class:
RedundantCastUtility
private static class RedundantCastUtility.IsRedundantVisitor
extends DepthFirstAstVisitor<Void,Void>
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final boolean
private boolean
private final Function
<AstNode, ResolveResult> -
Constructor Summary
ConstructorsConstructorDescriptionIsRedundantVisitor
(Function<AstNode, ResolveResult> resolver, boolean recursive) -
Method Summary
Modifier and TypeMethodDescriptionprotected void
addToResults
(CastExpression cast, boolean force) protected boolean
private boolean
castChangesBinarySemantics
(Expression operand, Expression otherOperand, Expression toCast, BinaryOperatorType operator) protected boolean
checkResolveAfterRemoveCast
(AstNode parent) private ConversionType
getConversion
(TypeReference target, TypeReference source, Expression value) Determines the conversion type, taking lossiness into consideration for numeric conversions.private ConversionType
getNumericConversion
(TypeReference target, TypeReference source, Expression value) Determines the numeric conversion type, taking lossiness into consideration.protected TypeReference
protected List
<TypeReference> getTypes
(AstNodeCollection<? extends AstNode> nodes) protected boolean
isCastRedundantInReferenceExpression
(TypeReference type, Expression operand) boolean
private static boolean
isPolymorphicMethod
(AstNode expression) final boolean
boolean
protected void
private void
protected void
processBinaryExpressionOperand
(Expression operand, Expression other, BinaryOperatorType op, TypeReference resultType) protected void
protected void
processPossibleTypeCast
(Expression rightExpression, TypeReference leftType) private static TypeReference
visitAssignmentExpression
(AssignmentExpression node, Void data) visitCastExpression
(CastExpression node, Void data) protected Void
visitChildren
(AstNode node, Void data) visitFieldDeclaration
(FieldDeclaration node, Void data) visitInvocationExpression
(InvocationExpression node, Void data) visitReturnStatement
(ReturnStatement node, Void data) visitVariableDeclaration
(VariableDeclarationStatement node, Void data) Methods inherited from class com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor
shouldContinue, visitAnnotation, visitArrayCreationExpression, visitArraySpecifier, visitAssertStatement, visitBlockStatement, visitBreakStatement, visitBytecodeConstant, visitCaseLabel, visitCatchClause, visitClassOfExpression, visitComment, visitCompilationUnit, visitComposedType, visitConditionalExpression, visitConstructorDeclaration, visitContinueStatement, visitDoWhileStatement, visitEmptyStatement, visitEnumValueDeclaration, visitExpressionStatement, visitForEachStatement, visitForStatement, visitGotoStatement, visitIdentifier, visitIdentifierExpression, visitIfElseStatement, visitImportDeclaration, visitIndexerExpression, visitInitializerBlock, visitInlinedBytecode, visitInstanceOfExpression, visitIntersectionType, visitJavaTokenNode, visitLabeledStatement, visitLabelStatement, visitLambdaExpression, visitLocalTypeDeclarationStatement, visitMemberReferenceExpression, visitMethodDeclaration, visitMethodGroupExpression, visitModuleDeclaration, visitNewLine, visitNullReferenceExpression, visitPackageDeclaration, visitParameterDeclaration, visitParenthesizedExpression, visitPatternPlaceholder, visitPrimitiveExpression, visitSimpleType, visitSuperReferenceExpression, visitSwitchExpression, visitSwitchExpressionArm, visitSwitchSection, visitSwitchStatement, visitSynchronizedStatement, visitText, visitThisReferenceExpression, visitThrowStatement, visitTryCatchStatement, visitTypeDeclaration, visitTypeParameterDeclaration, visitTypeReference, visitUnaryOperatorExpression, visitUnionType, visitVariableInitializer, visitWhileStatement, visitWildcardType
-
Field Details
-
_isRecursive
private final boolean _isRecursive -
_resolver
-
_isRedundant
private boolean _isRedundant
-
-
Constructor Details
-
IsRedundantVisitor
IsRedundantVisitor(Function<AstNode, ResolveResult> resolver, boolean recursive)
-
-
Method Details
-
isRedundant
public final boolean isRedundant() -
visitChildren
- Overrides:
visitChildren
in classDepthFirstAstVisitor<Void,
Void>
-
visitAssignmentExpression
- Specified by:
visitAssignmentExpression
in interfaceIAstVisitor<Void,
Void> - Overrides:
visitAssignmentExpression
in classDepthFirstAstVisitor<Void,
Void>
-
visitVariableDeclaration
- Specified by:
visitVariableDeclaration
in interfaceIAstVisitor<Void,
Void> - Overrides:
visitVariableDeclaration
in classDepthFirstAstVisitor<Void,
Void>
-
visitFieldDeclaration
- Specified by:
visitFieldDeclaration
in interfaceIAstVisitor<Void,
Void> - Overrides:
visitFieldDeclaration
in classDepthFirstAstVisitor<Void,
Void>
-
visitReturnStatement
- Specified by:
visitReturnStatement
in interfaceIAstVisitor<Void,
Void> - Overrides:
visitReturnStatement
in classDepthFirstAstVisitor<Void,
Void>
-
visitBinaryOperatorExpression
- Specified by:
visitBinaryOperatorExpression
in interfaceIAstVisitor<Void,
Void> - Overrides:
visitBinaryOperatorExpression
in classDepthFirstAstVisitor<Void,
Void>
-
visitInvocationExpression
- Specified by:
visitInvocationExpression
in interfaceIAstVisitor<Void,
Void> - Overrides:
visitInvocationExpression
in classDepthFirstAstVisitor<Void,
Void>
-
visitObjectCreationExpression
- Specified by:
visitObjectCreationExpression
in interfaceIAstVisitor<Void,
Void> - Overrides:
visitObjectCreationExpression
in classDepthFirstAstVisitor<Void,
Void>
-
visitAnonymousObjectCreationExpression
public Void visitAnonymousObjectCreationExpression(AnonymousObjectCreationExpression node, Void data) - Specified by:
visitAnonymousObjectCreationExpression
in interfaceIAstVisitor<Void,
Void> - Overrides:
visitAnonymousObjectCreationExpression
in classDepthFirstAstVisitor<Void,
Void>
-
visitArrayInitializerExpression
- Specified by:
visitArrayInitializerExpression
in interfaceIAstVisitor<Void,
Void> - Overrides:
visitArrayInitializerExpression
in classDepthFirstAstVisitor<Void,
Void>
-
processArrayInitializer
-
visitCastExpression
- Specified by:
visitCastExpression
in interfaceIAstVisitor<Void,
Void> - Overrides:
visitCastExpression
in classDepthFirstAstVisitor<Void,
Void>
-
getType
-
getTypes
-
processPossibleTypeCast
protected void processPossibleTypeCast(Expression rightExpression, @Nullable TypeReference leftType) -
addToResults
-
processBinaryExpressionOperand
protected void processBinaryExpressionOperand(Expression operand, Expression other, BinaryOperatorType op, TypeReference resultType) -
processCall
-
processAlreadyHasTypeCast
-
arrayAccessAtTheLeftSideOfAssignment
-
isCastRedundantInReferenceExpression
-
checkResolveAfterRemoveCast
-
isTypeCastSemantic
-
unbox
-
getConversion
private ConversionType getConversion(@NotNull TypeReference target, @NotNull TypeReference source, @Nullable Expression value) Determines the conversion type, taking lossiness into consideration for numeric conversions. ReturnsConversionType.NONE
if a determination could not be made. -
getNumericConversion
private ConversionType getNumericConversion(@NotNull TypeReference target, @NotNull TypeReference source, @Nullable Expression value) Determines the numeric conversion type, taking lossiness into consideration. ReturnsConversionType.NONE
if a determination could not be made. -
isInPolymorphicCall
-
isPolymorphicMethod
-
castChangesBinarySemantics
private boolean castChangesBinarySemantics(Expression operand, Expression otherOperand, Expression toCast, BinaryOperatorType operator)
-