Class DeclareVariablesTransform
- java.lang.Object
-
- com.strobel.decompiler.languages.java.ast.transforms.DeclareVariablesTransform
-
- All Implemented Interfaces:
IAstTransform
public class DeclareVariablesTransform extends java.lang.Object implements IAstTransform
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
DeclareVariablesTransform.AnalysisResult
private static class
DeclareVariablesTransform.IsSingleAssignmentVisitor
private static class
DeclareVariablesTransform.ParameterAssignmentVisitor
protected static class
DeclareVariablesTransform.VariableToDeclare
-
Field Summary
Fields Modifier and Type Field Description protected DecompilerContext
context
protected java.util.List<DeclareVariablesTransform.VariableToDeclare>
variablesToDeclare
-
Constructor Summary
Constructors Constructor Description DeclareVariablesTransform(DecompilerContext context)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private DeclareVariablesTransform.AnalysisResult
analyze(DeclareVariablesTransform.VariableToDeclare v, AstNode scope)
private static boolean
canMoveVariableIntoSubBlock(DefiniteAssignmentAnalysis analysis, BlockStatement block, Statement statement, java.lang.String variableName, boolean allowPassIntoLoops)
private static boolean
canRedeclareVariable(DefiniteAssignmentAnalysis analysis, BlockStatement block, AstNode node, java.lang.String variableName)
private void
declareVariableInBlock(DefiniteAssignmentAnalysis analysis, BlockStatement block, AstType type, java.lang.String variableName, Variable variable, boolean allowPassIntoLoops)
static boolean
findDeclarationPoint(DefiniteAssignmentAnalysis analysis, VariableDeclarationStatement declaration, BlockStatement block, StrongBox<Statement> declarationPoint, Statement skipUpThrough)
(package private) static boolean
findDeclarationPoint(DefiniteAssignmentAnalysis analysis, java.lang.String variableName, boolean allowPassIntoLoops, BlockStatement block, StrongBox<Statement> declarationPoint, Statement skipUpThrough)
private static boolean
hasNestedBlocks(AstNode node)
void
run(AstNode node)
private void
run(AstNode node, DefiniteAssignmentAnalysis daa)
private boolean
tryConvertAssignmentExpressionIntoVariableDeclaration(BlockStatement block, Expression expression, AstType type, java.lang.String variableName)
private boolean
tryConvertAssignmentExpressionIntoVariableDeclaration(BlockStatement block, Statement declarationPoint, AstType type, java.lang.String variableName)
private static boolean
usesVariable(AstNode node, java.lang.String variableName)
-
-
-
Field Detail
-
variablesToDeclare
protected final java.util.List<DeclareVariablesTransform.VariableToDeclare> variablesToDeclare
-
context
protected final DecompilerContext context
-
-
Constructor Detail
-
DeclareVariablesTransform
public DeclareVariablesTransform(DecompilerContext context)
-
-
Method Detail
-
run
public void run(AstNode node)
- Specified by:
run
in interfaceIAstTransform
-
analyze
private DeclareVariablesTransform.AnalysisResult analyze(DeclareVariablesTransform.VariableToDeclare v, AstNode scope)
-
run
private void run(AstNode node, DefiniteAssignmentAnalysis daa)
-
declareVariableInBlock
private void declareVariableInBlock(DefiniteAssignmentAnalysis analysis, BlockStatement block, AstType type, java.lang.String variableName, Variable variable, boolean allowPassIntoLoops)
-
findDeclarationPoint
public static boolean findDeclarationPoint(DefiniteAssignmentAnalysis analysis, VariableDeclarationStatement declaration, BlockStatement block, StrongBox<Statement> declarationPoint, Statement skipUpThrough)
-
findDeclarationPoint
static boolean findDeclarationPoint(DefiniteAssignmentAnalysis analysis, java.lang.String variableName, boolean allowPassIntoLoops, BlockStatement block, StrongBox<Statement> declarationPoint, Statement skipUpThrough)
-
canMoveVariableIntoSubBlock
private static boolean canMoveVariableIntoSubBlock(DefiniteAssignmentAnalysis analysis, BlockStatement block, Statement statement, java.lang.String variableName, boolean allowPassIntoLoops)
-
usesVariable
private static boolean usesVariable(AstNode node, java.lang.String variableName)
-
canRedeclareVariable
private static boolean canRedeclareVariable(DefiniteAssignmentAnalysis analysis, BlockStatement block, AstNode node, java.lang.String variableName)
-
hasNestedBlocks
private static boolean hasNestedBlocks(AstNode node)
-
tryConvertAssignmentExpressionIntoVariableDeclaration
private boolean tryConvertAssignmentExpressionIntoVariableDeclaration(BlockStatement block, Statement declarationPoint, AstType type, java.lang.String variableName)
-
tryConvertAssignmentExpressionIntoVariableDeclaration
private boolean tryConvertAssignmentExpressionIntoVariableDeclaration(BlockStatement block, Expression expression, AstType type, java.lang.String variableName)
-
-