org.eclipse.jdt.internal.compiler.flow
Class ExceptionHandlingFlowContext

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

public class ExceptionHandlingFlowContext
extends FlowContext

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


Field Summary
static int BitCacheSize
           
 java.util.ArrayList extendedExceptions
           
 ReferenceBinding[] handledExceptions
           
 UnconditionalFlowInfo initsOnReturn
           
 
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
 
Constructor Summary
ExceptionHandlingFlowContext(FlowContext parent, ASTNode associatedNode, ReferenceBinding[] handledExceptions, BlockScope scope, UnconditionalFlowInfo flowInfo)
           
 
Method Summary
 void complainIfUnusedExceptionHandlers(AbstractMethodDeclaration method)
           
 void complainIfUnusedExceptionHandlers(BlockScope scope, TryStatement tryStatement)
           
 java.lang.String individualToString()
           
 UnconditionalFlowInfo initsOnException(ReferenceBinding exceptionType)
           
 UnconditionalFlowInfo initsOnReturn()
           
 void mergeUnhandledException(TypeBinding newException)
           
 void recordHandlingException(ReferenceBinding exceptionType, UnconditionalFlowInfo flowInfo, TypeBinding raisedException, ASTNode invocationSite, boolean wasAlreadyDefinitelyCaught)
           
 void recordReturnFrom(UnconditionalFlowInfo flowInfo)
           
 SubRoutineStatement subroutine()
          Exception handlers (with no finally block) are also included with subroutine only once (in case parented with true InsideSubRoutineFlowContext).
 
Methods inherited from class org.eclipse.jdt.internal.compiler.flow.FlowContext
breakLabel, checkExceptionHandlers, checkExceptionHandlers, continueLabel, getTargetContextForBreakLabel, getTargetContextForContinueLabel, getTargetContextForDefaultBreak, getTargetContextForDefaultContinue, initsOnBreak, isBreakable, isContinuable, isNonReturningContext, isSubRoutine, labelName, recordBreakFrom, recordBreakTo, recordContinueFrom, recordSettingFinal, recordUsingNullReference, toString
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

BitCacheSize

public static final int BitCacheSize
See Also:
Constant Field Values

handledExceptions

public ReferenceBinding[] handledExceptions

initsOnReturn

public UnconditionalFlowInfo initsOnReturn

extendedExceptions

public java.util.ArrayList extendedExceptions
Constructor Detail

ExceptionHandlingFlowContext

public ExceptionHandlingFlowContext(FlowContext parent,
                                    ASTNode associatedNode,
                                    ReferenceBinding[] handledExceptions,
                                    BlockScope scope,
                                    UnconditionalFlowInfo flowInfo)
Method Detail

complainIfUnusedExceptionHandlers

public void complainIfUnusedExceptionHandlers(AbstractMethodDeclaration method)

complainIfUnusedExceptionHandlers

public void complainIfUnusedExceptionHandlers(BlockScope scope,
                                              TryStatement tryStatement)

individualToString

public java.lang.String individualToString()
Overrides:
individualToString in class FlowContext

initsOnException

public UnconditionalFlowInfo initsOnException(ReferenceBinding exceptionType)

initsOnReturn

public UnconditionalFlowInfo initsOnReturn()
Overrides:
initsOnReturn in class FlowContext

mergeUnhandledException

public void mergeUnhandledException(TypeBinding newException)

recordHandlingException

public void recordHandlingException(ReferenceBinding exceptionType,
                                    UnconditionalFlowInfo flowInfo,
                                    TypeBinding raisedException,
                                    ASTNode invocationSite,
                                    boolean wasAlreadyDefinitelyCaught)

recordReturnFrom

public void recordReturnFrom(UnconditionalFlowInfo flowInfo)
Overrides:
recordReturnFrom in class FlowContext

subroutine

public SubRoutineStatement subroutine()
Exception handlers (with no finally block) are also included with subroutine only once (in case parented with true InsideSubRoutineFlowContext). Standard management of subroutines need to also operate on intermediate exception handlers.

Overrides:
subroutine in class FlowContext
See Also:
FlowContext.subroutine()