| Modifier and Type | Field and Description |
|---|---|
LocalVariableBinding |
TryStatement.anyExceptionVariable |
LocalVariableBinding |
LocalDeclaration.binding |
LocalVariableBinding |
ForeachStatement.collectionVariable |
LocalVariableBinding |
ForeachStatement.indexVariable |
LocalVariableBinding |
ForeachStatement.maxVariable |
LocalVariableBinding |
FakedTrackingVariable.originalBinding |
LocalVariableBinding |
ReferenceExpression.receiverVariable |
LocalVariableBinding |
TryStatement.returnAddressVariable |
LocalVariableBinding |
ReturnStatement.saveValueVariable |
LocalVariableBinding |
TryStatement.secretReturnValue |
LocalVariableBinding |
SynchronizedStatement.synchroVariable |
| Modifier and Type | Method and Description |
|---|---|
LocalVariableBinding |
CastExpression.localVariableBinding() |
LocalVariableBinding |
SingleNameReference.localVariableBinding()
Returns the local variable referenced by this node.
|
LocalVariableBinding |
Expression.localVariableBinding()
Returns the local variable referenced by this node.
|
LocalVariableBinding |
Assignment.localVariableBinding() |
| Modifier and Type | Method and Description |
|---|---|
void |
LambdaExpression.addSyntheticArgument(LocalVariableBinding actualOuterLocalVariable) |
protected void |
NameReference.checkEffectiveFinality(LocalVariableBinding localBinding,
Scope scope) |
abstract boolean |
SubRoutineStatement.generateSubRoutineInvocation(BlockScope currentScope,
CodeStream codeStream,
Object targetLocation,
int stateIndex,
LocalVariableBinding secretLocal)
Generate an invocation of a subroutine (e.g.
|
boolean |
SynchronizedStatement.generateSubRoutineInvocation(BlockScope currentScope,
CodeStream codeStream,
Object targetLocation,
int stateIndex,
LocalVariableBinding secretLocal) |
boolean |
TryStatement.generateSubRoutineInvocation(BlockScope currentScope,
CodeStream codeStream,
Object targetLocation,
int stateIndex,
LocalVariableBinding secretLocal) |
void |
LocalDeclaration.getAllAnnotationContexts(int targetType,
LocalVariableBinding localVariable,
List allAnnotationContexts) |
SyntheticArgumentBinding |
LambdaExpression.getSyntheticArgument(LocalVariableBinding actualOuterLocalVariable) |
static void |
FakedTrackingVariable.handleResourceAssignment(BlockScope scope,
FlowInfo upstreamInfo,
FlowInfo flowInfo,
FlowContext flowContext,
ASTNode location,
Expression rhs,
LocalVariableBinding local)
Given the rhs of an assignment or local declaration has a (Auto)Closeable type (or null), setup for leak analysis now:
Create or re-use a tracking variable, and wire and initialize everything.
|
int |
FakedTrackingVariable.mergeCloseStatus(BlockScope currentScope,
int status,
LocalVariableBinding local,
BlockScope outerScope) |
static void |
FakedTrackingVariable.preConnectTrackerAcrossAssignment(ASTNode location,
LocalVariableBinding local,
Expression rhs,
FlowInfo flowInfo)
Before analyzing an assignment of this shape:
singleName = new Allocation()
connect any tracking variable of the LHS with the allocation on the RHS. |
| Constructor and Description |
|---|
FakedTrackingVariable(LocalVariableBinding original,
ASTNode location,
FlowInfo flowInfo,
FlowContext flowContext,
int nullStatus) |
| Modifier and Type | Field and Description |
|---|---|
LocalVariableBinding[] |
CodeStream.locals |
LocalVariableBinding |
AnnotationContext.variableBinding |
LocalVariableBinding[] |
CodeStream.visibleLocals |
| Modifier and Type | Method and Description |
|---|---|
void |
StackMapFrameCodeStream.addVariable(LocalVariableBinding localBinding) |
void |
CodeStream.addVariable(LocalVariableBinding localBinding) |
void |
CodeStream.addVisibleLocalVariable(LocalVariableBinding localBinding) |
void |
CodeStream.exitUserScope(BlockScope currentScope,
LocalVariableBinding binding) |
boolean |
CodeStream.isDefinitelyAssigned(Scope scope,
int initStateIndex,
LocalVariableBinding local) |
void |
CodeStream.load(LocalVariableBinding localBinding) |
void |
CodeStream.record(LocalVariableBinding local) |
void |
CodeStream.removeVariable(LocalVariableBinding localBinding) |
void |
CodeStream.store(LocalVariableBinding localBinding,
boolean valueRequired) |
void |
CodeStream.throwAnyException(LocalVariableBinding anyExceptionVariable) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
UnconditionalFlowInfo.cannotBeDefinitelyNullOrNonNull(LocalVariableBinding local) |
boolean |
FlowInfo.cannotBeDefinitelyNullOrNonNull(LocalVariableBinding local)
Check whether a given local variable is known to be unable to gain a definite
non null or definite null status by the use of an enclosing flow info.
|
boolean |
UnconditionalFlowInfo.cannotBeNull(LocalVariableBinding local) |
boolean |
FlowInfo.cannotBeNull(LocalVariableBinding local)
Check whether a given local variable is known to be non null, either because
it is definitely non null, or because is has been tested against non null.
|
boolean |
UnconditionalFlowInfo.canOnlyBeNull(LocalVariableBinding local) |
boolean |
FlowInfo.canOnlyBeNull(LocalVariableBinding local)
Check whether a given local variable is known to be null, either because it
is definitely null, or because is has been tested against null.
|
boolean |
ConditionalFlowInfo.hasNullInfoFor(LocalVariableBinding local) |
boolean |
UnconditionalFlowInfo.hasNullInfoFor(LocalVariableBinding local) |
abstract boolean |
FlowInfo.hasNullInfoFor(LocalVariableBinding local)
Check if any null info has been recorded for a given local variable.
|
boolean |
ConditionalFlowInfo.isDefinitelyAssigned(LocalVariableBinding local) |
boolean |
UnconditionalFlowInfo.isDefinitelyAssigned(LocalVariableBinding local) |
abstract boolean |
FlowInfo.isDefinitelyAssigned(LocalVariableBinding local)
Check status of definite assignment for a local.
|
boolean |
ConditionalFlowInfo.isDefinitelyNonNull(LocalVariableBinding local) |
boolean |
UnconditionalFlowInfo.isDefinitelyNonNull(LocalVariableBinding local) |
abstract boolean |
FlowInfo.isDefinitelyNonNull(LocalVariableBinding local)
Check status of definite non-null value for a given local variable.
|
boolean |
ConditionalFlowInfo.isDefinitelyNull(LocalVariableBinding local) |
boolean |
UnconditionalFlowInfo.isDefinitelyNull(LocalVariableBinding local) |
abstract boolean |
FlowInfo.isDefinitelyNull(LocalVariableBinding local)
Check status of definite null value for a given local variable.
|
boolean |
ConditionalFlowInfo.isDefinitelyUnknown(LocalVariableBinding local) |
boolean |
UnconditionalFlowInfo.isDefinitelyUnknown(LocalVariableBinding local) |
abstract boolean |
FlowInfo.isDefinitelyUnknown(LocalVariableBinding local)
Check status of definite unknown value for a given local variable.
|
boolean |
ConditionalFlowInfo.isPotentiallyAssigned(LocalVariableBinding local) |
boolean |
UnconditionalFlowInfo.isPotentiallyAssigned(LocalVariableBinding local) |
abstract boolean |
FlowInfo.isPotentiallyAssigned(LocalVariableBinding field)
Check status of potential assignment for a local variable.
|
boolean |
ConditionalFlowInfo.isPotentiallyNonNull(LocalVariableBinding local) |
boolean |
UnconditionalFlowInfo.isPotentiallyNonNull(LocalVariableBinding local) |
abstract boolean |
FlowInfo.isPotentiallyNonNull(LocalVariableBinding local)
Check status of potential null assignment for a local.
|
boolean |
ConditionalFlowInfo.isPotentiallyNull(LocalVariableBinding local) |
boolean |
UnconditionalFlowInfo.isPotentiallyNull(LocalVariableBinding local) |
abstract boolean |
FlowInfo.isPotentiallyNull(LocalVariableBinding local)
Check status of potential null assignment for a local.
|
boolean |
ConditionalFlowInfo.isPotentiallyUnknown(LocalVariableBinding local) |
boolean |
UnconditionalFlowInfo.isPotentiallyUnknown(LocalVariableBinding local) |
abstract boolean |
FlowInfo.isPotentiallyUnknown(LocalVariableBinding local)
Return true if the given local may have been assigned to an unknown value.
|
boolean |
ConditionalFlowInfo.isProtectedNonNull(LocalVariableBinding local) |
boolean |
UnconditionalFlowInfo.isProtectedNonNull(LocalVariableBinding local) |
abstract boolean |
FlowInfo.isProtectedNonNull(LocalVariableBinding local)
Return true if the given local is protected by a test against a non null
value.
|
boolean |
ConditionalFlowInfo.isProtectedNull(LocalVariableBinding local) |
boolean |
UnconditionalFlowInfo.isProtectedNull(LocalVariableBinding local) |
abstract boolean |
FlowInfo.isProtectedNull(LocalVariableBinding local)
Return true if the given local is protected by a test against null.
|
void |
ConditionalFlowInfo.markAsComparedEqualToNonNull(LocalVariableBinding local) |
void |
UnconditionalFlowInfo.markAsComparedEqualToNonNull(LocalVariableBinding local) |
abstract void |
FlowInfo.markAsComparedEqualToNonNull(LocalVariableBinding local)
Record that a local variable got checked to be non null.
|
void |
ConditionalFlowInfo.markAsComparedEqualToNull(LocalVariableBinding local) |
void |
UnconditionalFlowInfo.markAsComparedEqualToNull(LocalVariableBinding local) |
abstract void |
FlowInfo.markAsComparedEqualToNull(LocalVariableBinding local)
Record that a local variable got checked to be null.
|
void |
ConditionalFlowInfo.markAsDefinitelyAssigned(LocalVariableBinding local) |
void |
UnconditionalFlowInfo.markAsDefinitelyAssigned(LocalVariableBinding local) |
abstract void |
FlowInfo.markAsDefinitelyAssigned(LocalVariableBinding local)
Record a local got definitely assigned.
|
void |
ConditionalFlowInfo.markAsDefinitelyNonNull(LocalVariableBinding local) |
void |
UnconditionalFlowInfo.markAsDefinitelyNonNull(LocalVariableBinding local) |
abstract void |
FlowInfo.markAsDefinitelyNonNull(LocalVariableBinding local)
Record a local got definitely assigned to a non-null value.
|
void |
ConditionalFlowInfo.markAsDefinitelyNull(LocalVariableBinding local) |
void |
UnconditionalFlowInfo.markAsDefinitelyNull(LocalVariableBinding local) |
abstract void |
FlowInfo.markAsDefinitelyNull(LocalVariableBinding local)
Record a local got definitely assigned to null.
|
void |
ConditionalFlowInfo.markAsDefinitelyUnknown(LocalVariableBinding local) |
void |
UnconditionalFlowInfo.markAsDefinitelyUnknown(LocalVariableBinding local)
Mark a local as having been assigned to an unknown value.
|
abstract void |
FlowInfo.markAsDefinitelyUnknown(LocalVariableBinding local)
Record a local got definitely assigned to an unknown value.
|
void |
TryFlowContext.markFinallyNullStatus(LocalVariableBinding local,
int nullStatus) |
void |
FlowContext.markFinallyNullStatus(LocalVariableBinding local,
int nullStatus)
Record a given null status of a given local variable as it will be seen in the finally block.
|
void |
FlowInfo.markNullStatus(LocalVariableBinding local,
int nullStatus)
Mark the null status of the given local according to the given status
|
void |
ConditionalFlowInfo.markPotentiallyNonNullBit(LocalVariableBinding local) |
void |
UnconditionalFlowInfo.markPotentiallyNonNullBit(LocalVariableBinding local) |
abstract void |
FlowInfo.markPotentiallyNonNullBit(LocalVariableBinding local)
Record a local may have got assigned to non-null (set the bit on existing info).
|
void |
ConditionalFlowInfo.markPotentiallyNullBit(LocalVariableBinding local) |
void |
UnconditionalFlowInfo.markPotentiallyNullBit(LocalVariableBinding local) |
abstract void |
FlowInfo.markPotentiallyNullBit(LocalVariableBinding local)
Record a local may have got assigned to null (set the bit on existing info).
|
void |
ConditionalFlowInfo.markPotentiallyUnknownBit(LocalVariableBinding local) |
void |
UnconditionalFlowInfo.markPotentiallyUnknownBit(LocalVariableBinding local)
Mark a local as potentially having been assigned to an unknown value.
|
abstract void |
FlowInfo.markPotentiallyUnknownBit(LocalVariableBinding local)
Record a local may have got assigned to unknown (set the bit on existing info).
|
int |
FlowInfo.nullStatus(LocalVariableBinding local)
Answer the null status of the given local
|
protected void |
LoopingFlowContext.recordNullReference(LocalVariableBinding local,
ASTNode expression,
int checkType) |
protected void |
FinallyFlowContext.recordNullReference(LocalVariableBinding local,
ASTNode expression,
int checkType) |
protected void |
FlowContext.recordNullReference(LocalVariableBinding local,
ASTNode location,
int checkType)
Record a null reference for use by deferred checks.
|
void |
LoopingFlowContext.recordUsingNullReference(Scope scope,
LocalVariableBinding local,
ASTNode location,
int checkType,
FlowInfo flowInfo) |
void |
FinallyFlowContext.recordUsingNullReference(Scope scope,
LocalVariableBinding local,
ASTNode location,
int checkType,
FlowInfo flowInfo) |
void |
FlowContext.recordUsingNullReference(Scope scope,
LocalVariableBinding local,
ASTNode location,
int checkType,
FlowInfo flowInfo)
Record a null reference for use by deferred checks.
|
void |
ConditionalFlowInfo.resetAssignmentInfo(LocalVariableBinding local) |
void |
UnconditionalFlowInfo.resetAssignmentInfo(LocalVariableBinding local) |
abstract void |
FlowInfo.resetAssignmentInfo(LocalVariableBinding local)
Resets the definite and potential initialization info for the given local variable
|
void |
ConditionalFlowInfo.resetNullInfo(LocalVariableBinding local) |
void |
UnconditionalFlowInfo.resetNullInfo(LocalVariableBinding local) |
abstract void |
FlowInfo.resetNullInfo(LocalVariableBinding local)
Reset all null-information about a given local.
|
| Modifier and Type | Class and Description |
|---|---|
class |
AptBinaryLocalVariableBinding |
class |
AptSourceLocalVariableBinding |
class |
CatchParameterBinding |
class |
SyntheticArgumentBinding |
| Modifier and Type | Field and Description |
|---|---|
LocalVariableBinding |
SyntheticArgumentBinding.actualOuterLocalVariable |
LocalVariableBinding[] |
BlockScope.locals |
| Modifier and Type | Method and Description |
|---|---|
LocalVariableBinding |
BlockScope.findVariable(char[] variableName) |
LocalVariableBinding |
Scope.findVariable(char[] variable) |
| Modifier and Type | Method and Description |
|---|---|
void |
BlockScope.addLocalVariable(LocalVariableBinding binding) |
SyntheticArgumentBinding |
NestedTypeBinding.addSyntheticArgument(LocalVariableBinding actualOuterLocalVariable) |
SyntheticArgumentBinding |
NestedTypeBinding.addSyntheticArgumentAndField(LocalVariableBinding actualOuterLocalVariable) |
FieldBinding |
SourceTypeBinding.addSyntheticFieldForInnerclass(LocalVariableBinding actualOuterLocalVariable) |
void |
BlockScope.emulateOuterAccess(LocalVariableBinding outerLocalVariable) |
VariableBinding[] |
BlockScope.getEmulationPath(LocalVariableBinding outerLocalVariable) |
SyntheticArgumentBinding |
NestedTypeBinding.getSyntheticArgument(LocalVariableBinding actualOuterLocalVariable) |
FieldBinding |
SourceTypeBinding.getSyntheticField(LocalVariableBinding actualOuterLocalVariable) |
| Constructor and Description |
|---|
AptSourceLocalVariableBinding(LocalVariableBinding localVariableBinding,
MethodBinding methodBinding) |
SyntheticArgumentBinding(LocalVariableBinding actualOuterLocalVariable) |
Copyright © 2015. All rights reserved.