Class InsertNecessaryConversionsTransform
- java.lang.Object
-
- com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor<java.lang.Void,TResult>
-
- com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor<java.lang.Void>
-
- com.strobel.decompiler.languages.java.ast.transforms.InsertNecessaryConversionsTransform
-
- All Implemented Interfaces:
IAstVisitor<java.lang.Void,java.lang.Void>
,IAstTransform
public class InsertNecessaryConversionsTransform extends ContextTrackingVisitor<java.lang.Void>
-
-
Field Summary
Fields Modifier and Type Field Description private JavaResolver
_resolver
private java.util.ArrayDeque<INode>
_stack
private static INode
FALSE_NODE
private static ConvertTypeOptions
NO_IMPORT_OPTIONS
private static INode
TRUE_NODE
-
Fields inherited from class com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor
context
-
-
Constructor Summary
Constructors Constructor Description InsertNecessaryConversionsTransform(DecompilerContext context)
-
Method Summary
-
Methods inherited from class com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor
inConstructor, inMethod, inStaticInitializer, makeType, makeType, resolver, run, visitConstructorDeclaration, visitMethodDeclaration, visitMethodDeclarationOverride, visitTypeDeclaration, visitTypeDeclarationOverride
-
Methods inherited from class com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor
shouldContinue, visitAnnotation, visitAnonymousObjectCreationExpression, visitArrayCreationExpression, visitArraySpecifier, visitAssertStatement, visitBlockStatement, visitBreakStatement, visitBytecodeConstant, visitCaseLabel, visitCatchClause, visitChildren, visitClassOfExpression, visitComment, visitCompilationUnit, visitComposedType, visitContinueStatement, visitDoWhileStatement, visitEmptyStatement, visitEnumValueDeclaration, visitExpressionStatement, visitFieldDeclaration, visitForEachStatement, visitForStatement, visitGotoStatement, visitIdentifier, visitIdentifierExpression, visitImportDeclaration, visitIndexerExpression, visitInitializerBlock, visitInlinedBytecode, visitInstanceOfExpression, visitIntersectionType, visitInvocationExpression, visitJavaTokenNode, visitLabeledStatement, visitLabelStatement, visitLambdaExpression, visitLocalTypeDeclarationStatement, visitMethodGroupExpression, visitModuleDeclaration, visitNewLine, visitNullReferenceExpression, visitObjectCreationExpression, visitPackageDeclaration, visitParameterDeclaration, visitParenthesizedExpression, visitPatternPlaceholder, visitPrimitiveExpression, visitSimpleType, visitSuperReferenceExpression, visitSwitchExpression, visitSwitchExpressionArm, visitSwitchSection, visitSwitchStatement, visitSynchronizedStatement, visitText, visitThisReferenceExpression, visitThrowStatement, visitTryCatchStatement, visitTypeParameterDeclaration, visitTypeReference, visitUnionType, visitVariableInitializer, visitWhileStatement, visitWildcardType
-
-
-
-
Field Detail
-
NO_IMPORT_OPTIONS
private static final ConvertTypeOptions NO_IMPORT_OPTIONS
-
TRUE_NODE
private static final INode TRUE_NODE
-
FALSE_NODE
private static final INode FALSE_NODE
-
_resolver
private final JavaResolver _resolver
-
_stack
private final java.util.ArrayDeque<INode> _stack
-
-
Constructor Detail
-
InsertNecessaryConversionsTransform
public InsertNecessaryConversionsTransform(DecompilerContext context)
-
-
Method Detail
-
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>
-
visitMemberReferenceExpression
public java.lang.Void visitMemberReferenceExpression(MemberReferenceExpression node, java.lang.Void data)
- Specified by:
visitMemberReferenceExpression
in interfaceIAstVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitMemberReferenceExpression
in classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
adjustDeclaringType
private static TypeReference adjustDeclaringType(ResolveResult valueResult, TypeReference declaringType)
-
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>
-
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>
-
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>
-
addCastForAssignment
private boolean addCastForAssignment(AstNode left, Expression right)
-
visitUnaryOperatorExpression
public java.lang.Void visitUnaryOperatorExpression(UnaryOperatorExpression node, java.lang.Void data)
- Specified by:
visitUnaryOperatorExpression
in interfaceIAstVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitUnaryOperatorExpression
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>
-
visitIfElseStatement
public java.lang.Void visitIfElseStatement(IfElseStatement node, java.lang.Void data)
- Specified by:
visitIfElseStatement
in interfaceIAstVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitIfElseStatement
in classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
visitConditionalExpression
public java.lang.Void visitConditionalExpression(ConditionalExpression node, java.lang.Void data)
- Specified by:
visitConditionalExpression
in interfaceIAstVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitConditionalExpression
in classDepthFirstAstVisitor<java.lang.Void,java.lang.Void>
-
convertNumericToBoolean
private Expression convertNumericToBoolean(Expression node, TypeReference type)
-
convertBooleanToNumeric
private Expression convertBooleanToNumeric(Expression operand)
-
recurse
private void recurse(AstNode replacement)
-
-