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_isRecursiveprivate boolean_isRedundantprivate 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:
visitChildrenin classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitAssignmentExpression
public java.lang.Void visitAssignmentExpression(AssignmentExpression node, java.lang.Void data)
- Specified by:
visitAssignmentExpressionin interfaceIAstVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitAssignmentExpressionin classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitVariableDeclaration
public java.lang.Void visitVariableDeclaration(VariableDeclarationStatement node, java.lang.Void data)
- Specified by:
visitVariableDeclarationin interfaceIAstVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitVariableDeclarationin classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitFieldDeclaration
public java.lang.Void visitFieldDeclaration(FieldDeclaration node, java.lang.Void data)
- Specified by:
visitFieldDeclarationin interfaceIAstVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitFieldDeclarationin classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitReturnStatement
public java.lang.Void visitReturnStatement(ReturnStatement node, java.lang.Void data)
- Specified by:
visitReturnStatementin interfaceIAstVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitReturnStatementin classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitBinaryOperatorExpression
public java.lang.Void visitBinaryOperatorExpression(BinaryOperatorExpression node, java.lang.Void data)
- Specified by:
visitBinaryOperatorExpressionin interfaceIAstVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitBinaryOperatorExpressionin classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitInvocationExpression
public java.lang.Void visitInvocationExpression(InvocationExpression node, java.lang.Void data)
- Specified by:
visitInvocationExpressionin interfaceIAstVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitInvocationExpressionin classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitObjectCreationExpression
public java.lang.Void visitObjectCreationExpression(ObjectCreationExpression node, java.lang.Void data)
- Specified by:
visitObjectCreationExpressionin interfaceIAstVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitObjectCreationExpressionin classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitAnonymousObjectCreationExpression
public java.lang.Void visitAnonymousObjectCreationExpression(AnonymousObjectCreationExpression node, java.lang.Void data)
- Specified by:
visitAnonymousObjectCreationExpressionin interfaceIAstVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitAnonymousObjectCreationExpressionin classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitArrayInitializerExpression
public java.lang.Void visitArrayInitializerExpression(ArrayInitializerExpression node, java.lang.Void data)
- Specified by:
visitArrayInitializerExpressionin interfaceIAstVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitArrayInitializerExpressionin 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:
visitCastExpressionin interfaceIAstVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitCastExpressionin 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.NONEif 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.NONEif 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)
-
-