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 classBreakTargetRelocation.AssessForLoopResultprivate static classBreakTargetRelocation.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.AssessForLoopResultassessForLoop(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 booleanconvertToContinue(BlockStatement parent, BreakTargetRelocation.LabelInfo labelInfo, java.util.List<java.util.Stack<AstNode>> paths)private StatementfindLowestCommonAncestor(java.util.List<java.util.Stack<AstNode>> paths)private BlockStatementfindLowestCommonAncestorBlock(java.util.List<java.util.Stack<AstNode>> paths)private static booleanlookAhead(AstNode start, java.util.Set<AstNode> targets)private static booleanlookBehind(AstNode start, java.util.Set<AstNode> targets)private voidrebuildPaths(java.util.List<java.util.Stack<AstNode>> paths, BreakTargetRelocation.LabelInfo labelInfo)private voidrun(BreakTargetRelocation.LabelInfo labelInfo)private voidrunForMethod(AstNode node)java.lang.VoidvisitConstructorDeclaration(ConstructorDeclaration node, java.lang.Void p)protected java.lang.VoidvisitMethodDeclarationOverride(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:
visitMethodDeclarationOverridein classContextTrackingVisitor<java.lang.Void>
-
visitConstructorDeclaration
public java.lang.Void visitConstructorDeclaration(ConstructorDeclaration node, java.lang.Void p)
- Specified by:
visitConstructorDeclarationin interfaceIAstVisitor<java.lang.Void,java.lang.Void>- Overrides:
visitConstructorDeclarationin 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)
-
-