org.eclipse.jdt.internal.compiler.flow
Class LoopingFlowContext
java.lang.Object
org.eclipse.jdt.internal.compiler.flow.FlowContext
org.eclipse.jdt.internal.compiler.flow.SwitchFlowContext
org.eclipse.jdt.internal.compiler.flow.LoopingFlowContext
- All Implemented Interfaces:
- TypeConstants
public class LoopingFlowContext
- extends SwitchFlowContext
Reflects the context of code analysis, keeping track of enclosing
try statements, exception handlers, etc...
Fields inherited from class org.eclipse.jdt.internal.compiler.flow.FlowContext |
associatedNode, CAN_ONLY_NON_NULL, CAN_ONLY_NULL, CAN_ONLY_NULL_NON_NULL, CHECK_MASK, CONTEXT_MASK, IN_ASSIGNMENT, IN_COMPARISON_NON_NULL, IN_COMPARISON_NULL, IN_INSTANCEOF, initsOnFinally, MAY_NULL, NotContinuableContext, parent |
Fields inherited from interface org.eclipse.jdt.internal.compiler.lookup.TypeConstants |
ANNOTATION, ANNOTATION_PREFIX, ANNOTATION_SUFFIX, ANONYM_PREFIX, ANONYM_SUFFIX, BOOLEAN, BYTE, 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, CLINIT, CLONE, CONSTRAINT_EQUAL, CONSTRAINT_EXTENDS, CONSTRAINT_SUPER, DOUBLE, FLOAT, GETCLASS, INIT, INT, IO, JAVA, JAVA_IO, JAVA_IO_EXTERNALIZABLE, JAVA_IO_IOEXCEPTION, JAVA_IO_OBJECTINPUTSTREAM, JAVA_IO_OBJECTOUTPUTSTREAM, JAVA_IO_OBJECTSTREAMEXCEPTION, JAVA_IO_PRINTSTREAM, JAVA_IO_SERIALIZABLE, JAVA_LANG, JAVA_LANG_ANNOTATION_ANNOTATION, JAVA_LANG_ANNOTATION_DOCUMENTED, JAVA_LANG_ANNOTATION_ELEMENTTYPE, JAVA_LANG_ANNOTATION_INHERITED, JAVA_LANG_ANNOTATION_RETENTION, JAVA_LANG_ANNOTATION_RETENTIONPOLICY, JAVA_LANG_ANNOTATION_TARGET, JAVA_LANG_ASSERTIONERROR, 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_ILLEGALARGUMENTEXCEPTION, JAVA_LANG_INTEGER, 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_SHORT, JAVA_LANG_STRING, JAVA_LANG_STRINGBUFFER, JAVA_LANG_STRINGBUILDER, JAVA_LANG_SUPPRESSWARNINGS, JAVA_LANG_SYSTEM, JAVA_LANG_THROWABLE, JAVA_LANG_VOID, JAVA_UTIL_ITERATOR, JML_ANNOTATION, JML_ANNOTATION_CODE_BIGINT_MATH, JML_ANNOTATION_CODE_JAVA_MATH, JML_ANNOTATION_CODE_SAFE_MATH, JML_ANNOTATION_GHOST, JML_ANNOTATION_HELPER, JML_ANNOTATION_INSTANCE, JML_ANNOTATION_MODEL, JML_ANNOTATION_NON_NULL, JML_ANNOTATION_NON_NULL_BY_DEFAULT, JML_ANNOTATION_NULLABLE, JML_ANNOTATION_NULLABLE_BY_DEFAULT, JML_ANNOTATION_PEER, JML_ANNOTATION_PKG, JML_ANNOTATION_PURE, JML_ANNOTATION_READONLY, JML_ANNOTATION_REP, JML_ANNOTATION_SPEC_BIGINT_MATH, JML_ANNOTATION_SPEC_JAVA_MATH, JML_ANNOTATION_SPEC_PROTECTED, JML_ANNOTATION_SPEC_PUBLIC, JML_ANNOTATION_SPEC_SAFE_MATH, JML_ANNOTATION_TYPE_CODE_BIGINT_MATH, JML_ANNOTATION_TYPE_CODE_JAVA_MATH, JML_ANNOTATION_TYPE_CODE_SAFE_MATH, JML_ANNOTATION_TYPE_GHOST, JML_ANNOTATION_TYPE_HELPER, JML_ANNOTATION_TYPE_INSTANCE, JML_ANNOTATION_TYPE_MODEL, JML_ANNOTATION_TYPE_NON_NULL_BY_DEFAULT, JML_ANNOTATION_TYPE_NONNULL, JML_ANNOTATION_TYPE_NULLABLE, JML_ANNOTATION_TYPE_NULLABLE_BY_DEFAULT, JML_ANNOTATION_TYPE_PEER, JML_ANNOTATION_TYPE_PURE, JML_ANNOTATION_TYPE_READONLY, JML_ANNOTATION_TYPE_REP, JML_ANNOTATION_TYPE_SPEC_BIGINT_MATH, JML_ANNOTATION_TYPE_SPEC_JAVA_MATH, JML_ANNOTATION_TYPE_SPEC_PROTECTED, JML_ANNOTATION_TYPE_SPEC_PUBLIC, JML_ANNOTATION_TYPE_SPEC_SAFE_MATH, JML_ANNOTATION_TYPE_UNINITIALIZED, JML_ANNOTATION_UNINITIALIZED, JML_ORG, JML_RUNTIME, JML_RUNTIME_ANNOTATION, JML4, JMLSPECS, LANG, LENGTH, LONG, MAIN, MISMATCH, NULL, OBJECT, OK, PACKAGE_INFO_NAME, READOBJECT, READRESOLVE, REFLECT, SERIALPERSISTENTFIELDS, SERIALVERSIONUID, SHORT, SYNTHETIC_ACCESS_METHOD_PREFIX, SYNTHETIC_ASSERT_DISABLED, SYNTHETIC_CLASS, SYNTHETIC_ENCLOSING_INSTANCE_PREFIX, SYNTHETIC_ENUM_VALUES, SYNTHETIC_OUTER_LOCAL_PREFIX, SYNTHETIC_SWITCH_ENUM_TABLE, TYPE, UNCHECKED, UPPER_ANNOTATION_TYPE, UPPER_CLASS, UPPER_CONSTRUCTOR, UPPER_FIELD, UPPER_LOCAL_VARIABLE, UPPER_METHOD, UPPER_PACKAGE, UPPER_PARAMETER, UPPER_RUNTIME, UPPER_SOURCE, UTIL, 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 |
Methods inherited from class org.eclipse.jdt.internal.compiler.flow.FlowContext |
checkExceptionHandlers, checkExceptionHandlers, getTargetContextForBreakLabel, getTargetContextForContinueLabel, getTargetContextForDefaultBreak, getTargetContextForDefaultContinue, initsOnBreak, initsOnReturn, isNonReturningContext, isSubRoutine, labelName, recordReturnFrom, recordSettingFinal, subroutine, toString |
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
continueLabel
public BranchLabel continueLabel
initsOnContinue
public UnconditionalFlowInfo initsOnContinue
LoopingFlowContext
public LoopingFlowContext(FlowContext parent,
FlowInfo upstreamNullFlowInfo,
ASTNode associatedNode,
BranchLabel breakLabel,
BranchLabel continueLabel,
Scope associatedScope)
complainOnDeferredFinalChecks
public void complainOnDeferredFinalChecks(BlockScope scope,
FlowInfo flowInfo)
- Perform deferred checks relative to final variables duplicate initialization
of lack of initialization.
- Parameters:
scope
- the scope to which this context is associatedflowInfo
- the flow info against which checks must be performed
complainOnDeferredNullChecks
public void complainOnDeferredNullChecks(BlockScope scope,
FlowInfo callerFlowInfo)
- Perform deferred checks relative to the null status of local variables.
- Parameters:
scope
- the scope to which this context is associatedcallerFlowInfo
- the flow info against which checks must be performed
continueLabel
public BranchLabel continueLabel()
- Overrides:
continueLabel
in class FlowContext
individualToString
public java.lang.String individualToString()
- Overrides:
individualToString
in class SwitchFlowContext
isContinuable
public boolean isContinuable()
- Overrides:
isContinuable
in class FlowContext
isContinuedTo
public boolean isContinuedTo()
recordBreakTo
public void recordBreakTo(FlowContext targetContext)
- Overrides:
recordBreakTo
in class FlowContext
recordContinueFrom
public void recordContinueFrom(FlowContext innerFlowContext,
FlowInfo flowInfo)
- Overrides:
recordContinueFrom
in class FlowContext
recordUsingNullReference
public void recordUsingNullReference(Scope scope,
LocalVariableBinding local,
Expression reference,
int checkType,
FlowInfo flowInfo)
- Description copied from class:
FlowContext
- 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).
- Overrides:
recordUsingNullReference
in class FlowContext
- Parameters:
scope
- the scope into which the check is performedlocal
- the local variable involved in the checkreference
- the expression within which local liescheckType
- 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 FlowContext.IN_COMPARISON_NULL
,
FlowContext.IN_COMPARISON_NON_NULL
, FlowContext.IN_ASSIGNMENT
or FlowContext.IN_INSTANCEOF
)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)