Class BreakTargetRelocation
- 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.BreakTargetRelocation
-
- All Implemented Interfaces:
IAstVisitor<java.lang.Void,java.lang.Void>
,IAstTransform
public final class BreakTargetRelocation extends ContextTrackingVisitor<java.lang.Void>
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
BreakTargetRelocation.AssessForLoopResult
private static class
BreakTargetRelocation.LabelInfo
-
Field Summary
-
Fields inherited from class com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor
context
-
-
Constructor Summary
Constructors Constructor Description BreakTargetRelocation(DecompilerContext context)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private BreakTargetRelocation.AssessForLoopResult
assessForLoop(AstNode commonAncestor, java.util.List<java.util.Stack<AstNode>> paths, LabelStatement label, java.util.List<GotoStatement> statements)
private java.util.Stack<AstNode>
buildPath(AstNode node)
private boolean
convertToContinue(BlockStatement parent, BreakTargetRelocation.LabelInfo labelInfo, java.util.List<java.util.Stack<AstNode>> paths)
private Statement
findLowestCommonAncestor(java.util.List<java.util.Stack<AstNode>> paths)
private BlockStatement
findLowestCommonAncestorBlock(java.util.List<java.util.Stack<AstNode>> paths)
private static boolean
lookAhead(AstNode start, java.util.Set<AstNode> targets)
private static boolean
lookBehind(AstNode start, java.util.Set<AstNode> targets)
private void
rebuildPaths(java.util.List<java.util.Stack<AstNode>> paths, BreakTargetRelocation.LabelInfo labelInfo)
private void
run(BreakTargetRelocation.LabelInfo labelInfo)
private void
runForMethod(AstNode node)
java.lang.Void
visitConstructorDeclaration(ConstructorDeclaration node, java.lang.Void p)
protected java.lang.Void
visitMethodDeclarationOverride(MethodDeclaration node, java.lang.Void p)
-
Methods inherited from class com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor
inConstructor, inMethod, inStaticInitializer, makeType, makeType, resolver, run, visitMethodDeclaration, visitTypeDeclaration, visitTypeDeclarationOverride
-
Methods inherited from class com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor
shouldContinue, visitAnnotation, visitAnonymousObjectCreationExpression, visitArrayCreationExpression, visitArrayInitializerExpression, visitArraySpecifier, visitAssertStatement, visitAssignmentExpression, visitBinaryOperatorExpression, visitBlockStatement, visitBreakStatement, visitBytecodeConstant, visitCaseLabel, visitCastExpression, visitCatchClause, visitChildren, visitClassOfExpression, visitComment, visitCompilationUnit, visitComposedType, visitConditionalExpression, visitContinueStatement, visitDoWhileStatement, visitEmptyStatement, visitEnumValueDeclaration, visitExpressionStatement, visitFieldDeclaration, visitForEachStatement, visitForStatement, visitGotoStatement, visitIdentifier, visitIdentifierExpression, visitIfElseStatement, visitImportDeclaration, visitIndexerExpression, visitInitializerBlock, visitInlinedBytecode, visitInstanceOfExpression, visitIntersectionType, visitInvocationExpression, visitJavaTokenNode, visitLabeledStatement, visitLabelStatement, visitLambdaExpression, visitLocalTypeDeclarationStatement, visitMemberReferenceExpression, visitMethodGroupExpression, visitModuleDeclaration, visitNewLine, visitNullReferenceExpression, visitObjectCreationExpression, visitPackageDeclaration, visitParameterDeclaration, visitParenthesizedExpression, visitPatternPlaceholder, visitPrimitiveExpression, visitReturnStatement, visitSimpleType, visitSuperReferenceExpression, visitSwitchExpression, visitSwitchExpressionArm, visitSwitchSection, visitSwitchStatement, visitSynchronizedStatement, visitText, visitThisReferenceExpression, visitThrowStatement, visitTryCatchStatement, visitTypeParameterDeclaration, visitTypeReference, visitUnaryOperatorExpression, visitUnionType, visitVariableDeclaration, visitVariableInitializer, visitWhileStatement, visitWildcardType
-
-
-
-
Constructor Detail
-
BreakTargetRelocation
public BreakTargetRelocation(DecompilerContext context)
-
-
Method Detail
-
visitMethodDeclarationOverride
protected java.lang.Void visitMethodDeclarationOverride(MethodDeclaration node, java.lang.Void p)
- Overrides:
visitMethodDeclarationOverride
in classContextTrackingVisitor<java.lang.Void>
-
visitConstructorDeclaration
public java.lang.Void visitConstructorDeclaration(ConstructorDeclaration node, java.lang.Void p)
- Specified by:
visitConstructorDeclaration
in interfaceIAstVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitConstructorDeclaration
in classContextTrackingVisitor<java.lang.Void>
-
runForMethod
private void runForMethod(AstNode node)
-
run
private void run(BreakTargetRelocation.LabelInfo labelInfo)
-
rebuildPaths
private void rebuildPaths(java.util.List<java.util.Stack<AstNode>> paths, BreakTargetRelocation.LabelInfo labelInfo)
-
convertToContinue
private boolean convertToContinue(BlockStatement parent, BreakTargetRelocation.LabelInfo labelInfo, java.util.List<java.util.Stack<AstNode>> paths)
-
assessForLoop
private BreakTargetRelocation.AssessForLoopResult assessForLoop(AstNode commonAncestor, java.util.List<java.util.Stack<AstNode>> paths, LabelStatement label, java.util.List<GotoStatement> statements)
-
findLowestCommonAncestorBlock
private BlockStatement findLowestCommonAncestorBlock(java.util.List<java.util.Stack<AstNode>> paths)
-
findLowestCommonAncestor
private Statement findLowestCommonAncestor(java.util.List<java.util.Stack<AstNode>> paths)
-
-