public abstract class AbstractLValueScopeDiscoverer extends java.lang.Object implements LValueScopeDiscoverer
Modifier and Type | Class and Description |
---|---|
(package private) class |
AbstractLValueScopeDiscoverer.ScopeDefinition |
private static class |
AbstractLValueScopeDiscoverer.ScopeKey |
Modifier and Type | Field and Description |
---|---|
(package private) java.util.Stack<StatementContainer<StructuredStatement>> |
currentBlock |
(package private) int |
currentDepth |
(package private) StatementContainer<StructuredStatement> |
currentMark |
(package private) java.util.List<AbstractLValueScopeDiscoverer.ScopeDefinition> |
discoveredCreations |
(package private) java.util.Map<NamedVariable,AbstractLValueScopeDiscoverer.ScopeDefinition> |
earliestDefinition |
(package private) java.util.Map<java.lang.Integer,java.util.Map<NamedVariable,java.lang.Boolean>> |
earliestDefinitionsByLevel |
private ScopeDiscoverInfoCache |
factCache |
(package private) Options |
options |
private MethodPrototype |
prototype |
(package private) VariableFactory |
variableFactory |
Constructor and Description |
---|
AbstractLValueScopeDiscoverer(Options options,
MethodPrototype prototype,
VariableFactory variableFactory) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
collect, collectLocalVariableAssignment, descendLambdas
final java.util.Map<NamedVariable,AbstractLValueScopeDiscoverer.ScopeDefinition> earliestDefinition
final java.util.Map<java.lang.Integer,java.util.Map<NamedVariable,java.lang.Boolean>> earliestDefinitionsByLevel
int currentDepth
java.util.Stack<StatementContainer<StructuredStatement>> currentBlock
final java.util.List<AbstractLValueScopeDiscoverer.ScopeDefinition> discoveredCreations
final VariableFactory variableFactory
StatementContainer<StructuredStatement> currentMark
Options options
private final MethodPrototype prototype
private final ScopeDiscoverInfoCache factCache
AbstractLValueScopeDiscoverer(Options options, MethodPrototype prototype, VariableFactory variableFactory)
ScopeDiscoverInfoCache getFactCache()
public void enterBlock(StructuredStatement structuredStatement)
enterBlock
in interface LValueScopeDiscoverer
public boolean ifCanDefine()
ifCanDefine
in interface LValueScopeDiscoverer
public void processOp04Statement(Op04StructuredStatement statement)
processOp04Statement
in interface LValueScopeDiscoverer
public void mark(StatementContainer<StructuredStatement> mark)
mark
in interface LValueScopeDiscoverer
public void leaveBlock(StructuredStatement structuredStatement)
leaveBlock
in interface LValueScopeDiscoverer
public void collect(StackSSALabel lValue, StatementContainer<StructuredStatement> statementContainer, Expression value)
collect
in interface LValueAssignmentCollector<StructuredStatement>
collect
in interface LValueScopeDiscoverer
public void collectMultiUse(StackSSALabel lValue, StatementContainer<StructuredStatement> statementContainer, Expression value)
collectMultiUse
in interface LValueAssignmentCollector<StructuredStatement>
collectMultiUse
in interface LValueScopeDiscoverer
public void collectMutatedLValue(LValue lValue, StatementContainer<StructuredStatement> statementContainer, Expression value)
collectMutatedLValue
in interface LValueAssignmentCollector<StructuredStatement>
collectMutatedLValue
in interface LValueScopeDiscoverer
public void markDiscoveredCreations()
private StatementContainer<StructuredStatement> getNonInit(StatementContainer<StructuredStatement> creationContainer)
private boolean defineInsideSwitchContent(LValue scopedEntity, java.util.List<AbstractLValueScopeDiscoverer.ScopeDefinition> definitions, java.util.List<StatementContainer<StructuredStatement>> commonScope)
private static <T> java.util.List<T> getCommonPrefix(java.util.List<T> a, java.util.List<T> b)
private JavaTypeInstance getUnclashedType(InferredJavaType inferredJavaType)