Class ConvertLoopsTransform
- java.lang.Object
-
- com.strobel.decompiler.languages.java.ast.DepthFirstAstVisitor<java.lang.Void,TResult>
-
- com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor<AstNode>
-
- com.strobel.decompiler.languages.java.ast.transforms.ConvertLoopsTransform
-
- All Implemented Interfaces:
IAstVisitor<java.lang.Void,AstNode>
,IAstTransform
public final class ConvertLoopsTransform extends ContextTrackingVisitor<AstNode>
-
-
Field Summary
Fields Modifier and Type Field Description private static ExpressionStatement
ARRAY_INIT_PATTERN
private static WhileStatement
CONTINUE_OUTER_PATTERN
private static WhileStatement
DO_WHILE_PATTERN
private static WhileStatement
EMPTY_FOR_EACH_PATTERN
private static Statement[]
EMPTY_STATEMENTS
private static ForStatement
FOR_ARRAY_PATTERN_1
private static ForStatement
FOR_ARRAY_PATTERN_2
private static ForStatement
FOR_ARRAY_PATTERN_3
private static WhileStatement
FOR_EACH_PATTERN
private static ExpressionStatement
GET_ITERATOR_PATTERN
-
Fields inherited from class com.strobel.decompiler.languages.java.ast.ContextTrackingVisitor
context
-
-
Constructor Summary
Constructors Constructor Description ConvertLoopsTransform(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, visitArrayInitializerExpression, visitArraySpecifier, visitAssertStatement, visitAssignmentExpression, visitBinaryOperatorExpression, visitBlockStatement, visitBreakStatement, visitBytecodeConstant, visitCaseLabel, visitCastExpression, visitCatchClause, visitClassOfExpression, visitComment, visitCompilationUnit, visitComposedType, visitConditionalExpression, visitContinueStatement, visitDoWhileStatement, visitEmptyStatement, visitEnumValueDeclaration, 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, visitWildcardType
-
-
-
-
Field Detail
-
EMPTY_STATEMENTS
private static final Statement[] EMPTY_STATEMENTS
-
ARRAY_INIT_PATTERN
private static final ExpressionStatement ARRAY_INIT_PATTERN
-
FOR_ARRAY_PATTERN_1
private static final ForStatement FOR_ARRAY_PATTERN_1
-
FOR_ARRAY_PATTERN_2
private static final ForStatement FOR_ARRAY_PATTERN_2
-
FOR_ARRAY_PATTERN_3
private static final ForStatement FOR_ARRAY_PATTERN_3
-
GET_ITERATOR_PATTERN
private static final ExpressionStatement GET_ITERATOR_PATTERN
-
FOR_EACH_PATTERN
private static final WhileStatement FOR_EACH_PATTERN
-
EMPTY_FOR_EACH_PATTERN
private static final WhileStatement EMPTY_FOR_EACH_PATTERN
-
DO_WHILE_PATTERN
private static final WhileStatement DO_WHILE_PATTERN
-
CONTINUE_OUTER_PATTERN
private static final WhileStatement CONTINUE_OUTER_PATTERN
-
-
Constructor Detail
-
ConvertLoopsTransform
public ConvertLoopsTransform(DecompilerContext context)
-
-
Method Detail
-
visitChildren
protected AstNode visitChildren(AstNode node, java.lang.Void data)
- Overrides:
visitChildren
in classDepthFirstAstVisitor<java.lang.Void,AstNode>
-
visitExpressionStatement
public AstNode visitExpressionStatement(ExpressionStatement node, java.lang.Void data)
- Specified by:
visitExpressionStatement
in interfaceIAstVisitor<java.lang.Void,AstNode>
- Overrides:
visitExpressionStatement
in classDepthFirstAstVisitor<java.lang.Void,AstNode>
-
visitWhileStatement
public AstNode visitWhileStatement(WhileStatement node, java.lang.Void data)
- Specified by:
visitWhileStatement
in interfaceIAstVisitor<java.lang.Void,AstNode>
- Overrides:
visitWhileStatement
in classDepthFirstAstVisitor<java.lang.Void,AstNode>
-
transformFor
public final ForStatement transformFor(WhileStatement node)
-
hasNestedBlocks
private static boolean hasNestedBlocks(AstNode node)
-
isSimpleIterator
private static boolean isSimpleIterator(Statement statement)
-
canInlineInitializerDeclarations
private Statement canInlineInitializerDeclarations(ForStatement forLoop)
-
transformForEachInArray
public final ForEachStatement transformForEachInArray(ForStatement loop)
-
transformForEach
public final ForEachStatement transformForEach(ExpressionStatement node)
-
transformDoWhile
public final DoWhileStatement transformDoWhile(WhileStatement loop)
-
canConvertWhileToDoWhile
private boolean canConvertWhileToDoWhile(WhileStatement loop, ContinueStatement continueStatement)
-
transformContinueOuter
public final WhileStatement transformContinueOuter(WhileStatement loop)
-
findVariableDeclaration
static VariableDeclarationStatement findVariableDeclaration(AstNode node, java.lang.String identifier)
-
canMoveVariableDeclarationIntoStatement
static Statement canMoveVariableDeclarationIntoStatement(DecompilerContext context, VariableDeclarationStatement declaration, Statement targetStatement)
-
-