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 booleanprivate booleanprivate final Function<AstNode, ResolveResult> -
Constructor Summary
ConstructorsConstructorDescriptionIsRedundantVisitor(Function<AstNode, ResolveResult> resolver, boolean recursive) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddToResults(CastExpression cast, boolean force) protected booleanprivate booleancastChangesBinarySemantics(Expression operand, Expression otherOperand, Expression toCast, BinaryOperatorType operator) protected booleancheckResolveAfterRemoveCast(AstNode parent) private ConversionTypegetConversion(TypeReference target, TypeReference source, Expression value) Determines the conversion type, taking lossiness into consideration for numeric conversions.private ConversionTypegetNumericConversion(TypeReference target, TypeReference source, Expression value) Determines the numeric conversion type, taking lossiness into consideration.protected TypeReferenceprotected List<TypeReference> getTypes(AstNodeCollection<? extends AstNode> nodes) protected booleanisCastRedundantInReferenceExpression(TypeReference type, Expression operand) booleanprivate static booleanisPolymorphicMethod(AstNode expression) final booleanbooleanprotected voidprivate voidprotected voidprocessBinaryExpressionOperand(Expression operand, Expression other, BinaryOperatorType op, TypeReference resultType) protected voidprotected voidprocessPossibleTypeCast(Expression rightExpression, TypeReference leftType) private static TypeReferencevisitAssignmentExpression(AssignmentExpression node, Void data) visitCastExpression(CastExpression node, Void data) protected VoidvisitChildren(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 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:
visitChildrenin classDepthFirstAstVisitor<Void,Void>
-
visitAssignmentExpression
- Specified by:
visitAssignmentExpressionin interfaceIAstVisitor<Void,Void> - Overrides:
visitAssignmentExpressionin classDepthFirstAstVisitor<Void,Void>
-
visitVariableDeclaration
- Specified by:
visitVariableDeclarationin interfaceIAstVisitor<Void,Void> - Overrides:
visitVariableDeclarationin classDepthFirstAstVisitor<Void,Void>
-
visitFieldDeclaration
- Specified by:
visitFieldDeclarationin interfaceIAstVisitor<Void,Void> - Overrides:
visitFieldDeclarationin classDepthFirstAstVisitor<Void,Void>
-
visitReturnStatement
- Specified by:
visitReturnStatementin interfaceIAstVisitor<Void,Void> - Overrides:
visitReturnStatementin classDepthFirstAstVisitor<Void,Void>
-
visitBinaryOperatorExpression
- Specified by:
visitBinaryOperatorExpressionin interfaceIAstVisitor<Void,Void> - Overrides:
visitBinaryOperatorExpressionin classDepthFirstAstVisitor<Void,Void>
-
visitInvocationExpression
- Specified by:
visitInvocationExpressionin interfaceIAstVisitor<Void,Void> - Overrides:
visitInvocationExpressionin classDepthFirstAstVisitor<Void,Void>
-
visitObjectCreationExpression
- Specified by:
visitObjectCreationExpressionin interfaceIAstVisitor<Void,Void> - Overrides:
visitObjectCreationExpressionin classDepthFirstAstVisitor<Void,Void>
-
visitAnonymousObjectCreationExpression
public Void visitAnonymousObjectCreationExpression(AnonymousObjectCreationExpression node, Void data) - Specified by:
visitAnonymousObjectCreationExpressionin interfaceIAstVisitor<Void,Void> - Overrides:
visitAnonymousObjectCreationExpressionin classDepthFirstAstVisitor<Void,Void>
-
visitArrayInitializerExpression
- Specified by:
visitArrayInitializerExpressionin interfaceIAstVisitor<Void,Void> - Overrides:
visitArrayInitializerExpressionin classDepthFirstAstVisitor<Void,Void>
-
processArrayInitializer
-
visitCastExpression
- Specified by:
visitCastExpressionin interfaceIAstVisitor<Void,Void> - Overrides:
visitCastExpressionin 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.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
-
isPolymorphicMethod
-
castChangesBinarySemantics
private boolean castChangesBinarySemantics(Expression operand, Expression otherOperand, Expression toCast, BinaryOperatorType operator)
-