Class RedundantCastUtility.IsRedundantVisitor
- java.lang.Object
-
- com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
- com.strobel.decompiler.languages.java.utilities.RedundantCastUtility.IsRedundantVisitor
-
- All Implemented Interfaces:
IAstVisitor<java.lang.Void,java.lang.Void>
- Direct Known Subclasses:
RedundantCastUtility.CastCollector
- Enclosing class:
- RedundantCastUtility
private static class RedundantCastUtility.IsRedundantVisitor extends DepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
_isRecursive
private boolean
_isRedundant
private Function<AstNode,ResolveResult>
_resolver
-
Constructor Summary
Constructors Constructor Description IsRedundantVisitor(Function<AstNode,ResolveResult> resolver, boolean recursive)
-
Method Summary
-
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 Detail
-
_isRecursive
private final boolean _isRecursive
-
_resolver
private final Function<AstNode,ResolveResult> _resolver
-
_isRedundant
private boolean _isRedundant
-
-
Constructor Detail
-
IsRedundantVisitor
IsRedundantVisitor(Function<AstNode,ResolveResult> resolver, boolean recursive)
-
-
Method Detail
-
isRedundant
public final boolean isRedundant()
-
visitChildren
protected java.lang.Void visitChildren(AstNode node, java.lang.Void data)
- Overrides:
visitChildren
in classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitAssignmentExpression
public java.lang.Void visitAssignmentExpression(AssignmentExpression node, java.lang.Void data)
- Specified by:
visitAssignmentExpression
in interfaceIAstVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitAssignmentExpression
in classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitVariableDeclaration
public java.lang.Void visitVariableDeclaration(VariableDeclarationStatement node, java.lang.Void data)
- Specified by:
visitVariableDeclaration
in interfaceIAstVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitVariableDeclaration
in classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitFieldDeclaration
public java.lang.Void visitFieldDeclaration(FieldDeclaration node, java.lang.Void data)
- Specified by:
visitFieldDeclaration
in interfaceIAstVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitFieldDeclaration
in classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitReturnStatement
public java.lang.Void visitReturnStatement(ReturnStatement node, java.lang.Void data)
- Specified by:
visitReturnStatement
in interfaceIAstVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitReturnStatement
in classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitBinaryOperatorExpression
public java.lang.Void visitBinaryOperatorExpression(BinaryOperatorExpression node, java.lang.Void data)
- Specified by:
visitBinaryOperatorExpression
in interfaceIAstVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitBinaryOperatorExpression
in classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitInvocationExpression
public java.lang.Void visitInvocationExpression(InvocationExpression node, java.lang.Void data)
- Specified by:
visitInvocationExpression
in interfaceIAstVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitInvocationExpression
in classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitObjectCreationExpression
public java.lang.Void visitObjectCreationExpression(ObjectCreationExpression node, java.lang.Void data)
- Specified by:
visitObjectCreationExpression
in interfaceIAstVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitObjectCreationExpression
in classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitAnonymousObjectCreationExpression
public java.lang.Void visitAnonymousObjectCreationExpression(AnonymousObjectCreationExpression node, java.lang.Void data)
- Specified by:
visitAnonymousObjectCreationExpression
in interfaceIAstVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitAnonymousObjectCreationExpression
in classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitArrayInitializerExpression
public java.lang.Void visitArrayInitializerExpression(ArrayInitializerExpression node, java.lang.Void data)
- Specified by:
visitArrayInitializerExpression
in interfaceIAstVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitArrayInitializerExpression
in classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
processArrayInitializer
private void processArrayInitializer(ArrayInitializerExpression node)
-
visitCastExpression
public java.lang.Void visitCastExpression(CastExpression node, java.lang.Void data)
- Specified by:
visitCastExpression
in interfaceIAstVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitCastExpression
in classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
getType
protected TypeReference getType(AstNode node)
-
getTypes
@NotNull protected java.util.List<TypeReference> getTypes(AstNodeCollection<? extends AstNode> nodes)
-
processPossibleTypeCast
protected void processPossibleTypeCast(Expression rightExpression, @Nullable TypeReference leftType)
-
addToResults
protected void addToResults(@NotNull CastExpression cast, boolean force)
-
processBinaryExpressionOperand
protected void processBinaryExpressionOperand(Expression operand, Expression other, BinaryOperatorType op, TypeReference resultType)
-
processCall
protected void processCall(@NotNull Expression e)
-
processAlreadyHasTypeCast
protected void processAlreadyHasTypeCast(CastExpression cast)
-
arrayAccessAtTheLeftSideOfAssignment
protected boolean arrayAccessAtTheLeftSideOfAssignment(AstNode node)
-
isCastRedundantInReferenceExpression
protected boolean isCastRedundantInReferenceExpression(TypeReference type, Expression operand)
-
checkResolveAfterRemoveCast
protected boolean checkResolveAfterRemoveCast(AstNode parent)
-
isTypeCastSemantic
public boolean isTypeCastSemantic(CastExpression cast)
-
unbox
private static TypeReference unbox(TypeReference t)
-
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
public boolean isInPolymorphicCall(CastExpression cast)
-
isPolymorphicMethod
private static boolean isPolymorphicMethod(AstNode expression)
-
castChangesBinarySemantics
private boolean castChangesBinarySemantics(Expression operand, Expression otherOperand, Expression toCast, BinaryOperatorType operator)
-
-