Class DefiniteAssignmentAnalysis
java.lang.Object
com.strobel.decompiler.languages.java.ast.DefiniteAssignmentAnalysis
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static final class
(package private) final class
(package private) static final class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ArrayList
<DefiniteAssignmentAnalysis.DefiniteAssignmentNode> private int
private int
private final LinkedHashMap
<ControlFlowEdge, DefiniteAssignmentStatus> private final ArrayDeque
<DefiniteAssignmentAnalysis.DefiniteAssignmentNode> private final Function
<AstNode, ResolveResult> private final ArrayList
<IdentifierExpression> private final List
<IdentifierExpression> private String
private final DefiniteAssignmentAnalysis.DefiniteAssignmentVisitor
-
Constructor Summary
ConstructorsConstructorDescriptionDefiniteAssignmentAnalysis
(DecompilerContext context, Statement rootStatement) DefiniteAssignmentAnalysis
(Statement rootStatement, Function<AstNode, ResolveResult> resolver) -
Method Summary
Modifier and TypeMethodDescriptionvoid
void
analyze
(String variable, DefiniteAssignmentStatus initialStatus) private void
changeEdgeStatus
(ControlFlowEdge edge, DefiniteAssignmentStatus newStatus) private void
changeNodeStatus
(DefiniteAssignmentAnalysis.DefiniteAssignmentNode node, DefiniteAssignmentStatus inputStatus) private DefiniteAssignmentStatus
protected Boolean
protected ResolveResult
getBeforeLoopCondition
(Statement statement) getStatusAfter
(Statement statement) getStatusBefore
(Statement statement) private void
insertAnonymousMethods
(int insertPosition, AstNode node, ControlFlowGraphBuilder builder) boolean
private DefiniteAssignmentStatus
void
setAnalyzedRange
(Statement start, Statement end) void
setAnalyzedRange
(Statement start, Statement end, boolean startInclusive, boolean endInclusive)
-
Field Details
-
visitor
-
allNodes
-
beginNodeMap
private final LinkedHashMap<Statement,DefiniteAssignmentAnalysis.DefiniteAssignmentNode> beginNodeMap -
endNodeMap
-
conditionNodeMap
private final LinkedHashMap<Statement,DefiniteAssignmentAnalysis.DefiniteAssignmentNode> conditionNodeMap -
edgeStatus
-
unassignedVariableUses
-
unassignedVariableUsesView
-
nodesWithModifiedInput
-
resolver
-
variableName
-
analyzedRangeStart
private int analyzedRangeStart -
analyzedRangeEnd
private int analyzedRangeEnd
-
-
Constructor Details
-
DefiniteAssignmentAnalysis
-
DefiniteAssignmentAnalysis
public DefiniteAssignmentAnalysis(Statement rootStatement, Function<AstNode, ResolveResult> resolver)
-
-
Method Details
-
insertAnonymousMethods
private void insertAnonymousMethods(int insertPosition, AstNode node, ControlFlowGraphBuilder builder) -
getUnassignedVariableUses
-
setAnalyzedRange
-
setAnalyzedRange
-
analyze
-
analyze
-
isPotentiallyAssigned
public boolean isPotentiallyAssigned() -
getStatusBefore
-
getStatusAfter
-
getBeforeLoopCondition
-
cleanSpecialValues
-
mergeStatus
private DefiniteAssignmentStatus mergeStatus(DefiniteAssignmentStatus a, DefiniteAssignmentStatus b) -
changeNodeStatus
private void changeNodeStatus(DefiniteAssignmentAnalysis.DefiniteAssignmentNode node, DefiniteAssignmentStatus inputStatus) -
changeEdgeStatus
-
evaluateConstant
-
evaluateCondition
-