org.eclipse.jdt.internal.compiler.flow
Class FlowContext
java.lang.Object
org.eclipse.jdt.internal.compiler.flow.FlowContext
- All Implemented Interfaces:
- TypeConstants
- Direct Known Subclasses:
- ExceptionHandlingFlowContext, FinallyFlowContext, InsideSubRoutineFlowContext, SwitchFlowContext
public class FlowContext
- extends java.lang.Object
- implements TypeConstants
Reflects the context of code analysis, keeping track of enclosing
try statements, exception handlers, etc...
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 |
Method Summary |
BranchLabel |
breakLabel()
|
void |
checkExceptionHandlers(TypeBinding[] raisedExceptions,
ASTNode location,
FlowInfo flowInfo,
BlockScope scope)
|
void |
checkExceptionHandlers(TypeBinding raisedException,
ASTNode location,
FlowInfo flowInfo,
BlockScope scope)
|
BranchLabel |
continueLabel()
|
FlowContext |
getTargetContextForBreakLabel(char[] labelName)
|
FlowContext |
getTargetContextForContinueLabel(char[] labelName)
|
FlowContext |
getTargetContextForDefaultBreak()
|
FlowContext |
getTargetContextForDefaultContinue()
|
java.lang.String |
individualToString()
|
FlowInfo |
initsOnBreak()
|
UnconditionalFlowInfo |
initsOnReturn()
|
boolean |
isBreakable()
|
boolean |
isContinuable()
|
boolean |
isNonReturningContext()
|
boolean |
isSubRoutine()
|
char[] |
labelName()
|
void |
recordBreakFrom(FlowInfo flowInfo)
|
void |
recordBreakTo(FlowContext targetContext)
|
void |
recordContinueFrom(FlowContext innerFlowContext,
FlowInfo flowInfo)
|
void |
recordReturnFrom(UnconditionalFlowInfo flowInfo)
|
void |
recordSettingFinal(VariableBinding variable,
Reference finalReference,
FlowInfo flowInfo)
|
void |
recordUsingNullReference(Scope scope,
LocalVariableBinding local,
Expression reference,
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 |
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
NotContinuableContext
public static final FlowContext NotContinuableContext
associatedNode
public ASTNode associatedNode
parent
public FlowContext parent
initsOnFinally
public NullInfoRegistry initsOnFinally
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
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
FlowContext
public FlowContext(FlowContext parent,
ASTNode associatedNode)
breakLabel
public BranchLabel breakLabel()
checkExceptionHandlers
public void checkExceptionHandlers(TypeBinding raisedException,
ASTNode location,
FlowInfo flowInfo,
BlockScope scope)
checkExceptionHandlers
public void checkExceptionHandlers(TypeBinding[] raisedExceptions,
ASTNode location,
FlowInfo flowInfo,
BlockScope scope)
continueLabel
public BranchLabel continueLabel()
getTargetContextForBreakLabel
public FlowContext getTargetContextForBreakLabel(char[] labelName)
getTargetContextForContinueLabel
public FlowContext getTargetContextForContinueLabel(char[] labelName)
getTargetContextForDefaultBreak
public FlowContext getTargetContextForDefaultBreak()
getTargetContextForDefaultContinue
public FlowContext getTargetContextForDefaultContinue()
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()
recordBreakFrom
public void recordBreakFrom(FlowInfo flowInfo)
recordBreakTo
public void recordBreakTo(FlowContext targetContext)
recordContinueFrom
public void recordContinueFrom(FlowContext innerFlowContext,
FlowInfo flowInfo)
recordReturnFrom
public void recordReturnFrom(UnconditionalFlowInfo flowInfo)
recordSettingFinal
public void recordSettingFinal(VariableBinding variable,
Reference finalReference,
FlowInfo flowInfo)
recordUsingNullReference
public void recordUsingNullReference(Scope scope,
LocalVariableBinding local,
Expression reference,
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 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 IN_COMPARISON_NULL
,
IN_COMPARISON_NON_NULL
, IN_ASSIGNMENT
or 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)
subroutine
public SubRoutineStatement subroutine()
toString
public java.lang.String toString()
- Overrides:
toString
in class java.lang.Object