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 classDeclareVariablesTransform.AnalysisResultprivate static classDeclareVariablesTransform.IsSingleAssignmentVisitorprivate static classDeclareVariablesTransform.ParameterAssignmentVisitorprotected static classDeclareVariablesTransform.VariableToDeclare
-
Field Summary
Fields Modifier and Type Field Description protected DecompilerContextcontextprotected 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.AnalysisResultanalyze(DeclareVariablesTransform.VariableToDeclare v, AstNode scope)private static booleancanMoveVariableIntoSubBlock(DefiniteAssignmentAnalysis analysis, BlockStatement block, Statement statement, java.lang.String variableName, boolean allowPassIntoLoops)private static booleancanRedeclareVariable(DefiniteAssignmentAnalysis analysis, BlockStatement block, AstNode node, java.lang.String variableName)private voiddeclareVariableInBlock(DefiniteAssignmentAnalysis analysis, BlockStatement block, AstType type, java.lang.String variableName, Variable variable, boolean allowPassIntoLoops)static booleanfindDeclarationPoint(DefiniteAssignmentAnalysis analysis, VariableDeclarationStatement declaration, BlockStatement block, StrongBox<Statement> declarationPoint, Statement skipUpThrough)(package private) static booleanfindDeclarationPoint(DefiniteAssignmentAnalysis analysis, java.lang.String variableName, boolean allowPassIntoLoops, BlockStatement block, StrongBox<Statement> declarationPoint, Statement skipUpThrough)private static booleanhasNestedBlocks(AstNode node)voidrun(AstNode node)private voidrun(AstNode node, DefiniteAssignmentAnalysis daa)private booleantryConvertAssignmentExpressionIntoVariableDeclaration(BlockStatement block, Expression expression, AstType type, java.lang.String variableName)private booleantryConvertAssignmentExpressionIntoVariableDeclaration(BlockStatement block, Statement declarationPoint, AstType type, java.lang.String variableName)private static booleanusesVariable(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:
runin 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)
-
-