org.aspectj.org.eclipse.jdt.internal.compiler.flow
Class FlowContext

java.lang.Object
  extended by org.aspectj.org.eclipse.jdt.internal.compiler.flow.FlowContext
All Implemented Interfaces:
TypeConstants
Direct Known Subclasses:
ExceptionHandlingFlowContext, SwitchFlowContext, TryFlowContext

public class FlowContext
extends java.lang.Object
implements TypeConstants

Reflects the context of code analysis, keeping track of enclosing try statements, exception handlers, etc...


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants
TypeConstants.CloseMethodRecord
 
Field Summary
static int ASSIGN_TO_NONNULL
           
 ASTNode associatedNode
           
static int CAN_ONLY_NON_NULL
           
static int CAN_ONLY_NULL
           
static int CAN_ONLY_NULL_NON_NULL
           
static int CHECK_MASK
           
 int conditionalLevel
          Used to record whether effects in a try block affect the finally-block conditionally or unconditionally.
static int CONTEXT_MASK
           
static int DEFER_NULL_DIAGNOSTIC
           
static int EXIT_RESOURCE
           
static int HIDE_NULL_COMPARISON_WARNING
          used to hide null comparison related warnings inside assert statements
static int HIDE_NULL_COMPARISON_WARNING_MASK
           
static int IN_ASSIGNMENT
           
static int IN_COMPARISON_NON_NULL
           
static int IN_COMPARISON_NULL
           
static int IN_INSTANCEOF
           
static int IN_UNBOXING
           
 FlowInfo initsOnFinally
           
static int INSIDE_NEGATION
           
static int MAY_NULL
           
static FlowContext NotContinuableContext
           
 FlowContext parent
           
static int PREEMPT_NULL_DIAGNOSTIC
           
 TypeBinding[][] providedExpectedTypes
           
 int tagBits
           
 
Fields inherited from interface org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants
ANNOTATION, ANNOTATION_PREFIX, ANNOTATION_SUFFIX, ANONYM_PREFIX, ANONYM_SUFFIX, ANONYMOUS_METHOD, APACHE, APACHE_DBUTILS, APACHE_IOUTILS, ASSERT_CLASS, ASSERT_FALSE, ASSERT_NOTNULL, ASSERT_NULL, ASSERT_TRUE, BOOLEAN, BYTE, CAPTURE18, CHAR, CharArray_JAVA_IO_OBJECTINPUTSTREAM, CharArray_JAVA_IO_OBJECTOUTPUTSTREAM, CharArray_JAVA_IO_OBJECTSTREAMFIELD, CharArray_JAVA_LANG_ANNOTATION_ANNOTATION, CharArray_JAVA_LANG_ENUM, CharArray_JAVA_LANG_OBJECT, CHECK_ARGUMENT, CHECK_NOT_NULL, CHECK_STATE, CLINIT, CLONE, CLOSE, CLOSE_QUIETLY, closeMethods, COM, COM_GOOGLE_COMMON_BASE_PRECONDITIONS, COM_GOOGLE_INJECT_INJECT, COMMONS, COMPILER, CONSTRAINT_EQUAL, CONSTRAINT_EXTENDS, CONSTRAINT_SUPER, CORE, DEFAULT_LOCATION__ARRAY_CONTENTS, DEFAULT_LOCATION__FIELD, DEFAULT_LOCATION__PARAMETER, DEFAULT_LOCATION__RETURN_TYPE, DEFAULT_LOCATION__TYPE_ARGUMENT, DEFAULT_LOCATION__TYPE_BOUND, DEFAULT_LOCATION__TYPE_PARAMETER, DESERIALIZE_LAMBDA, DOM, DOUBLE, ECLIPSE, EQUALS, FLOAT, FRAMEWORK, GETCLASS, GOOGLE, GUAVA_CLOSEABLES, HASHCODE, INIT, INJECT_PACKAGE, INJECT_TYPE, INT, INTERNAL, INVOKE, IO, IS_NOTNULL, IS_TRUE, ITYPEBINDING, JAVA, JAVA_IO, JAVA_IO_CLOSEABLE, JAVA_IO_EXTERNALIZABLE, JAVA_IO_IOEXCEPTION, JAVA_IO_OBJECTINPUTSTREAM, JAVA_IO_OBJECTOUTPUTSTREAM, JAVA_IO_OBJECTSTREAMEXCEPTION, JAVA_IO_PRINTSTREAM, JAVA_IO_RESOURCE_FREE_CLOSEABLES, JAVA_IO_SERIALIZABLE, JAVA_IO_WRAPPER_CLOSEABLES, JAVA_LANG, JAVA_LANG_ANNOTATION_ANNOTATION, JAVA_LANG_ANNOTATION_DOCUMENTED, JAVA_LANG_ANNOTATION_ELEMENTTYPE, JAVA_LANG_ANNOTATION_INHERITED, JAVA_LANG_ANNOTATION_REPEATABLE, JAVA_LANG_ANNOTATION_RETENTION, JAVA_LANG_ANNOTATION_RETENTIONPOLICY, JAVA_LANG_ANNOTATION_TARGET, JAVA_LANG_ASSERTIONERROR, JAVA_LANG_AUTOCLOSEABLE, JAVA_LANG_BOOLEAN, JAVA_LANG_BYTE, JAVA_LANG_CHARACTER, JAVA_LANG_CLASS, JAVA_LANG_CLASSNOTFOUNDEXCEPTION, JAVA_LANG_CLONEABLE, JAVA_LANG_DEPRECATED, JAVA_LANG_DOUBLE, JAVA_LANG_ENUM, JAVA_LANG_ERROR, JAVA_LANG_EXCEPTION, JAVA_LANG_FLOAT, JAVA_LANG_FUNCTIONAL_INTERFACE, JAVA_LANG_ILLEGALARGUMENTEXCEPTION, JAVA_LANG_INTEGER, JAVA_LANG_INVOKE_LAMBDAMETAFACTORY, JAVA_LANG_INVOKE_METHODHANDLE_$_POLYMORPHICSIGNATURE, JAVA_LANG_INVOKE_METHODHANDLE_POLYMORPHICSIGNATURE, JAVA_LANG_INVOKE_METHODHANDLES, JAVA_LANG_INVOKE_SERIALIZEDLAMBDA, JAVA_LANG_ITERABLE, JAVA_LANG_LONG, JAVA_LANG_NOCLASSDEFERROR, JAVA_LANG_OBJECT, JAVA_LANG_OVERRIDE, JAVA_LANG_REFLECT_CONSTRUCTOR, JAVA_LANG_REFLECT_FIELD, JAVA_LANG_REFLECT_METHOD, JAVA_LANG_RUNTIMEEXCEPTION, JAVA_LANG_SAFEVARARGS, JAVA_LANG_SHORT, JAVA_LANG_STRING, JAVA_LANG_STRINGBUFFER, JAVA_LANG_STRINGBUILDER, JAVA_LANG_SUPPRESSWARNINGS, JAVA_LANG_SYSTEM, JAVA_LANG_THROWABLE, JAVA_LANG_VOID, JAVA_NIO_FILE_FILES, JAVA_UTIL_COLLECTION, JAVA_UTIL_ITERATOR, JAVA_UTIL_OBJECTS, JAVA_UTIL_ZIP_WRAPPER_CLOSEABLES, JAVAX, JAVAX_ANNOTATION_INJECT_INJECT, JAVAX_RMI_CORBA_STUB, JDT, JUNIT, JUNIT_FRAMEWORK_ASSERT, LAMBDA_TYPE, LANG, LANG3, LENGTH, LONG, LOOKUP, MAIN, MISMATCH, NOT_NULL, NULL, OBJECT, OK, OPTIONAL, ORG, ORG_APACHE_COMMONS_LANG_VALIDATE, ORG_APACHE_COMMONS_LANG3_VALIDATE, ORG_ECLIPSE_CORE_RUNTIME_ASSERT, ORG_ECLIPSE_JDT_CORE_DOM_ITYPEBINDING, ORG_ECLIPSE_JDT_INTERNAL_COMPILER_LOOKUP_TYPEBINDING, ORG_JUNIT_ASSERT, OTHER_WRAPPER_CLOSEABLES, PACKAGE_INFO_NAME, READOBJECT, READRESOLVE, REFLECT, REQUIRE_NON_NULL, RESOURCE_FREE_CLOSEABLE_STREAM, RUNTIME, SERIALPERSISTENTFIELDS, SERIALVERSIONUID, SHORT, SYNTHETIC_ACCESS_METHOD_PREFIX, SYNTHETIC_ASSERT_DISABLED, SYNTHETIC_CLASS, SYNTHETIC_ENCLOSING_INSTANCE_PREFIX, SYNTHETIC_ENUM_CONSTANT_INITIALIZATION_METHOD_PREFIX, SYNTHETIC_ENUM_VALUES, SYNTHETIC_OUTER_LOCAL_PREFIX, SYNTHETIC_STATIC_FACTORY, SYNTHETIC_SWITCH_ENUM_TABLE, TYPE, TYPE_PARAMETER_TARGET, TYPE_USE_TARGET, TYPEBINDING, UNCHECKED, UPPER_ANNOTATION_TYPE, UPPER_CLASS, UPPER_CONSTRUCTOR, UPPER_FIELD, UPPER_LOCAL_VARIABLE, UPPER_METHOD, UPPER_PACKAGE, UPPER_PARAMETER, UPPER_RUNTIME, UPPER_SOURCE, UTIL, VALIDATE_CLASS, VALUE, VALUEOF, VALUES, VOID, WILDCARD_CAPTURE, WILDCARD_CAPTURE_NAME_PREFIX, WILDCARD_CAPTURE_NAME_SUFFIX, WILDCARD_EXTENDS, WILDCARD_MINUS, WILDCARD_NAME, WILDCARD_PLUS, WILDCARD_STAR, WILDCARD_SUPER, WRITEOBJECT, WRITEREPLACE, ZIP
 
Constructor Summary
FlowContext(FlowContext parent, ASTNode associatedNode)
           
 
Method Summary
 BranchLabel breakLabel()
           
 void checkExceptionHandlers(TypeBinding[] raisedExceptions, ASTNode location, FlowInfo flowInfo, BlockScope scope)
           
 void checkExceptionHandlers(TypeBinding raisedException, ASTNode location, FlowInfo flowInfo, BlockScope scope)
           
 void checkExceptionHandlers(TypeBinding raisedException, ASTNode location, FlowInfo flowInfo, BlockScope scope, boolean isExceptionOnAutoClose)
           
protected  void checkUnboxing(Scope scope, Expression expression, FlowInfo flowInfo)
          During deferred checking re-visit a previously recording unboxing situation.
 BranchLabel continueLabel()
           
 void expireNullCheckedFieldInfo()
          Forget any information about fields that were previously known to be non-null.
 void extendTimeToLiveForNullCheckedField(int t)
          If a null checked field has been recorded recently, increase its time to live.
 FlowInfo getInitsForFinalBlankInitializationCheck(TypeBinding declaringType, FlowInfo flowInfo)
           
 FlowContext getLocalParent()
          Answer the parent flow context but be careful not to cross the boundary of a nested type, or null if no such parent exists.
 FlowContext getTargetContextForBreakLabel(char[] labelName)
           
 FlowContext getTargetContextForContinueLabel(char[] labelName)
           
 FlowContext getTargetContextForDefaultBreak()
           
 FlowContext getTargetContextForDefaultContinue()
           
 java.lang.String individualToString()
           
 FlowInfo initsOnBreak()
           
 UnconditionalFlowInfo initsOnReturn()
           
protected  boolean internalRecordNullityMismatch(Expression expression, TypeBinding providedType, int nullStatus, TypeBinding expectedType, int checkType)
           
 boolean isBreakable()
           
 boolean isContinuable()
           
 boolean isNonReturningContext()
           
 boolean isNullcheckedFieldAccess(Reference reference)
          Is the given field reference equivalent to a reference that is freshly known to be non-null? Can only return true if CompilerOptions.enableSyntacticNullAnalysisForFields (implicitly by guards before calls to recordNullCheckedFieldReference(Reference, int)).
 boolean isSubRoutine()
           
 char[] labelName()
           
 void 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 mergeFinallyNullInfo(FlowInfo flowInfo)
          Merge the effect of a statement presumably contained in a try-block, i.e., record how the collected info will affect the corresponding finally-block.
 void recordAbruptExit()
          Record the fact that an abrupt exit has been observed, one of: - potential exception (incl.
 void recordBreakFrom(FlowInfo flowInfo)
           
 void recordBreakTo(FlowContext targetContext)
           
 void recordContinueFrom(FlowContext innerFlowContext, FlowInfo flowInfo)
           
 boolean recordExitAgainstResource(BlockScope scope, FlowInfo flowInfo, FakedTrackingVariable trackingVar, ASTNode reference)
          Record that we found an early exit from a method while a resource is in scope.
protected  boolean recordFinalAssignment(VariableBinding variable, Reference finalReference)
           
 void recordNullCheckedFieldReference(Reference reference, int timeToLive)
          Record that a reference to a field has been seen in a non-null state.
 void recordNullityMismatch(BlockScope currentScope, Expression expression, TypeBinding providedType, TypeBinding expectedType, int nullStatus)
          Record that a nullity mismatch was detected against an annotated type reference.
protected  void recordNullReference(LocalVariableBinding local, ASTNode location, int checkType)
          Record a null reference for use by deferred checks.
protected  void recordProvidedExpectedTypes(TypeBinding providedType, TypeBinding expectedType, int nullCount)
           
 void recordReturnFrom(UnconditionalFlowInfo flowInfo)
           
 void recordSettingFinal(VariableBinding variable, Reference finalReference, FlowInfo flowInfo)
           
 void recordUnboxing(Scope scope, Expression expression, int nullStatus, FlowInfo flowInfo)
          Either AST analysis or checking of a child flow context has encountered an unboxing situation.
 void recordUsingNullReference(Scope scope, LocalVariableBinding local, ASTNode location, int checkType, FlowInfo flowInfo)
          Record a null reference for use by deferred checks.
 SubRoutineStatement subroutine()
           
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

NotContinuableContext

public static final FlowContext NotContinuableContext

associatedNode

public ASTNode associatedNode

parent

public FlowContext parent

initsOnFinally

public FlowInfo initsOnFinally

conditionalLevel

public int conditionalLevel
Used to record whether effects in a try block affect the finally-block conditionally or unconditionally. -1 means: no effect, 0 means: unconditional effect, > 0 means levels of nested conditional structures.


tagBits

public int tagBits

providedExpectedTypes

public TypeBinding[][] providedExpectedTypes

DEFER_NULL_DIAGNOSTIC

public static final int DEFER_NULL_DIAGNOSTIC
See Also:
Constant Field Values

PREEMPT_NULL_DIAGNOSTIC

public static final int PREEMPT_NULL_DIAGNOSTIC
See Also:
Constant Field Values

INSIDE_NEGATION

public static final int INSIDE_NEGATION
See Also:
Constant Field Values

HIDE_NULL_COMPARISON_WARNING

public static final int HIDE_NULL_COMPARISON_WARNING
used to hide null comparison related warnings inside assert statements

See Also:
Constant Field Values

HIDE_NULL_COMPARISON_WARNING_MASK

public static final int HIDE_NULL_COMPARISON_WARNING_MASK
See Also:
Constant Field Values

CAN_ONLY_NULL_NON_NULL

public static final int CAN_ONLY_NULL_NON_NULL
See Also:
Constant Field Values

CAN_ONLY_NULL

public static final int CAN_ONLY_NULL
See Also:
Constant Field Values

CAN_ONLY_NON_NULL

public static final int CAN_ONLY_NON_NULL
See Also:
Constant Field Values

MAY_NULL

public static final int MAY_NULL
See Also:
Constant Field Values

ASSIGN_TO_NONNULL

public static final int ASSIGN_TO_NONNULL
See Also:
Constant Field Values

IN_UNBOXING

public static final int IN_UNBOXING
See Also:
Constant Field Values

EXIT_RESOURCE

public static final int EXIT_RESOURCE
See Also:
Constant Field Values

CHECK_MASK

public static final int CHECK_MASK
See Also:
Constant Field Values

IN_COMPARISON_NULL

public static final int IN_COMPARISON_NULL
See Also:
Constant Field Values

IN_COMPARISON_NON_NULL

public static final int IN_COMPARISON_NON_NULL
See Also:
Constant Field Values

IN_ASSIGNMENT

public static final int IN_ASSIGNMENT
See Also:
Constant Field Values

IN_INSTANCEOF

public static final int IN_INSTANCEOF
See Also:
Constant Field Values

CONTEXT_MASK

public static final int CONTEXT_MASK
See Also:
Constant Field Values
Constructor Detail

FlowContext

public FlowContext(FlowContext parent,
                   ASTNode associatedNode)
Method Detail

recordNullCheckedFieldReference

public void recordNullCheckedFieldReference(Reference reference,
                                            int timeToLive)
Record that a reference to a field has been seen in a non-null state.

Parameters:
reference - Can be a SingleNameReference, a FieldReference or a QualifiedNameReference resolving to a field
timeToLive - control how many expire events are needed to expire this information

extendTimeToLiveForNullCheckedField

public void extendTimeToLiveForNullCheckedField(int t)
If a null checked field has been recorded recently, increase its time to live.


expireNullCheckedFieldInfo

public void expireNullCheckedFieldInfo()
Forget any information about fields that were previously known to be non-null. Will only cause any effect if CompilerOptions.enableSyntacticNullAnalysisForFields (implicitly by guards before calls to recordNullCheckedFieldReference(Reference, int)).


isNullcheckedFieldAccess

public boolean isNullcheckedFieldAccess(Reference reference)
Is the given field reference equivalent to a reference that is freshly known to be non-null? Can only return true if CompilerOptions.enableSyntacticNullAnalysisForFields (implicitly by guards before calls to recordNullCheckedFieldReference(Reference, int)).


breakLabel

public BranchLabel breakLabel()

checkExceptionHandlers

public void checkExceptionHandlers(TypeBinding raisedException,
                                   ASTNode location,
                                   FlowInfo flowInfo,
                                   BlockScope scope)

checkExceptionHandlers

public void checkExceptionHandlers(TypeBinding raisedException,
                                   ASTNode location,
                                   FlowInfo flowInfo,
                                   BlockScope scope,
                                   boolean isExceptionOnAutoClose)
Parameters:
isExceptionOnAutoClose - This is for checking exception handlers for exceptions raised during the auto close of resources inside a try with resources statement. (Relevant for source levels 1.7 and above only)

checkExceptionHandlers

public void checkExceptionHandlers(TypeBinding[] raisedExceptions,
                                   ASTNode location,
                                   FlowInfo flowInfo,
                                   BlockScope scope)

continueLabel

public BranchLabel continueLabel()

getInitsForFinalBlankInitializationCheck

public FlowInfo getInitsForFinalBlankInitializationCheck(TypeBinding declaringType,
                                                         FlowInfo flowInfo)

getTargetContextForBreakLabel

public FlowContext getTargetContextForBreakLabel(char[] labelName)

getTargetContextForContinueLabel

public FlowContext getTargetContextForContinueLabel(char[] labelName)

getTargetContextForDefaultBreak

public FlowContext getTargetContextForDefaultBreak()

getTargetContextForDefaultContinue

public FlowContext getTargetContextForDefaultContinue()

getLocalParent

public FlowContext getLocalParent()
Answer the parent flow context but be careful not to cross the boundary of a nested type, or null if no such parent exists.


individualToString

public java.lang.String individualToString()

initsOnBreak

public FlowInfo initsOnBreak()

initsOnReturn

public UnconditionalFlowInfo initsOnReturn()

isBreakable

public boolean isBreakable()

isContinuable

public boolean isContinuable()

isNonReturningContext

public boolean isNonReturningContext()

isSubRoutine

public boolean isSubRoutine()

labelName

public char[] labelName()

markFinallyNullStatus

public void markFinallyNullStatus(LocalVariableBinding local,
                                  int nullStatus)
Record a given null status of a given local variable as it will be seen in the finally block.

Parameters:
local - the local variable being observed
nullStatus - the null status of local at the current point in the flow

mergeFinallyNullInfo

public void mergeFinallyNullInfo(FlowInfo flowInfo)
Merge the effect of a statement presumably contained in a try-block, i.e., record how the collected info will affect the corresponding finally-block. Precondition: caller has checked that initsOnFinally != null.

Parameters:
flowInfo - info after executing a statement of the try-block.

recordAbruptExit

public void recordAbruptExit()
Record the fact that an abrupt exit has been observed, one of: - potential exception (incl. unchecked exceptions) - break - continue - return


recordBreakFrom

public void recordBreakFrom(FlowInfo flowInfo)

recordBreakTo

public void recordBreakTo(FlowContext targetContext)

recordContinueFrom

public void recordContinueFrom(FlowContext innerFlowContext,
                               FlowInfo flowInfo)

recordExitAgainstResource

public boolean recordExitAgainstResource(BlockScope scope,
                                         FlowInfo flowInfo,
                                         FakedTrackingVariable trackingVar,
                                         ASTNode reference)
Record that we found an early exit from a method while a resource is in scope.

Parameters:
scope - enclosing scope
flowInfo - flowInfo at the point of the early exit
trackingVar - representation of the resource
reference - the return or throw statement marking the early exit
Returns:
true if the situation has been handled by this flow context.

recordProvidedExpectedTypes

protected void recordProvidedExpectedTypes(TypeBinding providedType,
                                           TypeBinding expectedType,
                                           int nullCount)

recordFinalAssignment

protected boolean recordFinalAssignment(VariableBinding variable,
                                        Reference finalReference)

recordNullReference

protected void recordNullReference(LocalVariableBinding local,
                                   ASTNode location,
                                   int checkType)
Record a null reference for use by deferred checks. Only looping or finally contexts really record that information. Other contexts immediately check for unboxing.

Parameters:
local - the local variable involved in the check
location - the location triggering the analysis, for normal null dereference this is an expression resolving to 'local', for resource leaks it is an early exit statement.
checkType - the checkType against which the check must be performed; one of CAN_ONLY_NULL, CAN_ONLY_NULL_NON_NULL, MAY_NULL, CAN_ONLY_NON_NULL, potentially combined with a context indicator (one of IN_COMPARISON_NULL, IN_COMPARISON_NON_NULL, IN_ASSIGNMENT or IN_INSTANCEOF).
Alternatively, a IN_UNBOXING check can e requested.

recordUnboxing

public void recordUnboxing(Scope scope,
                           Expression expression,
                           int nullStatus,
                           FlowInfo flowInfo)
Either AST analysis or checking of a child flow context has encountered an unboxing situation. Record this fact for handling at an appropriate point in time.

Parameters:
nullStatus - the status as we know it so far.

checkUnboxing

protected void checkUnboxing(Scope scope,
                             Expression expression,
                             FlowInfo flowInfo)
During deferred checking re-visit a previously recording unboxing situation.


recordReturnFrom

public void recordReturnFrom(UnconditionalFlowInfo flowInfo)

recordSettingFinal

public void recordSettingFinal(VariableBinding variable,
                               Reference finalReference,
                               FlowInfo flowInfo)

recordUsingNullReference

public void recordUsingNullReference(Scope scope,
                                     LocalVariableBinding local,
                                     ASTNode location,
                                     int checkType,
                                     FlowInfo flowInfo)
Record a null reference for use by deferred checks. Only looping or finally contexts really record that information. The context may emit an error immediately depending on the status of local against flowInfo and its nature (only looping of finally contexts defer part of the checks; nonetheless, contexts that are nested into a looping or a finally context get affected and delegate some checks to their enclosing context).

Parameters:
scope - the scope into which the check is performed
local - the local variable involved in the check
location - the location triggering the analysis, for normal null dereference this is an expression resolving to 'local', for resource leaks it is an early exit statement.
checkType - the status against which the check must be performed; one of CAN_ONLY_NULL, CAN_ONLY_NULL_NON_NULL, MAY_NULL, potentially combined with a context indicator (one of IN_COMPARISON_NULL, IN_COMPARISON_NON_NULL, IN_ASSIGNMENT or IN_INSTANCEOF) and a bit to indicate whether the reference is being recorded inside an assert, HIDE_NULL_COMPARISON_WARNING
flowInfo - the flow info at the check point; deferring contexts will perform supplementary checks against flow info instances that cannot be known at the time of calling this method (they are influenced by code that follows the current point)

subroutine

public SubRoutineStatement subroutine()

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

recordNullityMismatch

public void recordNullityMismatch(BlockScope currentScope,
                                  Expression expression,
                                  TypeBinding providedType,
                                  TypeBinding expectedType,
                                  int nullStatus)
Record that a nullity mismatch was detected against an annotated type reference.

Parameters:
currentScope - scope for error reporting
expression - the expression violating the specification
providedType - the type of the provided value, i.e., either expression or an element thereof (in ForeachStatements)
expectedType - the declared type of the spec'ed variable, for error reporting.
nullStatus - the null status of expression at the current location

internalRecordNullityMismatch

protected boolean internalRecordNullityMismatch(Expression expression,
                                                TypeBinding providedType,
                                                int nullStatus,
                                                TypeBinding expectedType,
                                                int checkType)