Klasse LoopingFlowContext
java.lang.Object
org.aspectj.org.eclipse.jdt.internal.compiler.flow.FlowContext
org.aspectj.org.eclipse.jdt.internal.compiler.flow.SwitchFlowContext
org.aspectj.org.eclipse.jdt.internal.compiler.flow.LoopingFlowContext
- Alle implementierten Schnittstellen:
TypeConstants
Reflects the context of code analysis, keeping track of enclosing
try statements, exception handlers, etc...
-
Verschachtelte Klassen - Übersicht
Von Schnittstelle geerbte verschachtelte Klassen/Schnittstellen org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeConstants
TypeConstants.BoundCheckStatus, TypeConstants.CloseMethodRecord, TypeConstants.DangerousMethod
-
Feldübersicht
Modifizierer und TypFeldBeschreibungVon Klasse geerbte Felder org.aspectj.org.eclipse.jdt.internal.compiler.flow.SwitchFlowContext
breakLabel, initsOnBreak, isExpression
Von Klasse geerbte Felder org.aspectj.org.eclipse.jdt.internal.compiler.flow.FlowContext
ASSIGN_TO_NONNULL, associatedNode, CAN_ONLY_NON_NULL, CAN_ONLY_NULL, CAN_ONLY_NULL_NON_NULL, CHECK_MASK, conditionalLevel, CONTEXT_MASK, DEFER_NULL_DIAGNOSTIC, EXIT_RESOURCE, HIDE_NULL_COMPARISON_WARNING, HIDE_NULL_COMPARISON_WARNING_MASK, IN_ASSIGNMENT, IN_COMPARISON_NON_NULL, IN_COMPARISON_NULL, IN_INSTANCEOF, IN_UNBOXING, initsOnFinally, INSIDE_NEGATION, MAY_NULL, NotContinuableContext, parent, PREEMPT_NULL_DIAGNOSTIC, providedExpectedTypes, tagBits
Von Schnittstelle geerbte Felder 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, API, ASSERT_CLASS, ASSERT_FALSE, ASSERT_NOTNULL, ASSERT_NULL, ASSERT_TRUE, ASSERTIONS_CLASS, AUTOMATIC_MODULE_NAME, AUTOWIRED, BEANS, BOOLEAN, BYTE, CAPTURE18, CHANNELS, 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, CharArray_JAVA_LANG_RECORD, CharArray_JAVA_LANG_RECORD_SLASH, 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, CONTAINS, CONTAINS_ALL, CONTAINS_KEY, CONTAINS_VALUE, 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, ESSENTIAL_API, FACTORY, FLOAT, FLUENT_RESOURCE_CLASSES, FOR_REMOVAL, FRAMEWORK, GET, GETCLASS, GOOGLE, GUAVA_CLOSEABLES, HASHCODE, IMPLEMENTS, INDEX_OF, INIT, INJECT_PACKAGE, INJECT_TYPE, INT, INTERNAL, INVOKE, IO, IS_INSTANCE, IS_NOTNULL, IS_NULL, IS_TRUE, ITYPEBINDING, JAVA, JAVA_BASE, 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, 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_INCOMPATIBLECLASSCHANGEERROR, JAVA_LANG_INTEGER, JAVA_LANG_INVOKE_LAMBDAMETAFACTORY, JAVA_LANG_INVOKE_METHODHANDLE, JAVA_LANG_INVOKE_METHODHANDLE_$_POLYMORPHICSIGNATURE, JAVA_LANG_INVOKE_METHODHANDLE_POLYMORPHICSIGNATURE, JAVA_LANG_INVOKE_METHODHANDLES, JAVA_LANG_INVOKE_SERIALIZEDLAMBDA, JAVA_LANG_INVOKE_VARHANDLE, JAVA_LANG_ITERABLE, JAVA_LANG_LONG, JAVA_LANG_NOCLASSDEFERROR, JAVA_LANG_NOSUCHFIELDERROR, JAVA_LANG_OBJECT, JAVA_LANG_OVERRIDE, JAVA_LANG_RECORD, JAVA_LANG_REFLECT_CONSTRUCTOR, JAVA_LANG_REFLECT_FIELD, JAVA_LANG_REFLECT_METHOD, JAVA_LANG_RUNTIME_OBJECTMETHODS, JAVA_LANG_RUNTIME_SWITCHBOOTSTRAPS, 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_ARRAYS, JAVA_UTIL_COLLECTION, JAVA_UTIL_ITERATOR, JAVA_UTIL_LIST, JAVA_UTIL_MAP, JAVA_UTIL_OBJECTS, JAVA_UTIL_STREAM, JAVA_UTIL_ZIP_WRAPPER_CLOSEABLES, JAVAC, JAVAX, JAVAX_ANNOTATION_INJECT_INJECT, JAVAX_RMI_CORBA_STUB, JDK, JDK_INTERNAL_JAVAC_PREVIEW_FEATURE, JDK_INTERNAL_PREVIEW_FEATURE, JDK_INTERNAL_VALUEBASED, JDT, JUNIT, JUNIT_FRAMEWORK_ASSERT, JUPITER, KEYWORD_EXTENDS, LAMBDA_TYPE, LANG, LANG3, LAST_INDEX_OF, LENGTH, LONG, LOOKUP, MAIN, META_INF_MANIFEST_MF, METHOD_SOURCE, MODULE_INFO_CLASS_NAME, MODULE_INFO_CLASS_NAME_STRING, MODULE_INFO_FILE_NAME, MODULE_INFO_FILE_NAME_STRING, MODULE_INFO_NAME, MODULE_INFO_NAME_STRING, NEXT, NIO, NON_NULL, NOT_NULL, NULL, OBJECT, ONE_UTIL_STREAMEX, 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, ORG_JUNIT_JUPITER_API_ASSERTIONS, ORG_JUNIT_METHOD_SOURCE, ORG_SPRING_AUTOWIRED, OTHER_WRAPPER_CLOSEABLES, PACKAGE_INFO_NAME, PARAMS, PERMITS, PROVIDER, READOBJECT, READRESOLVE, RECORD_CLASS, RECORD_RESTRICTED_IDENTIFIER, REFLECT, REMOVE, REMOVE_ALL, REQUIRE_NON_NULL, REQUIRED, RESOURCE_FREE_CLOSEABLE_J_U_STREAMS, RESOURCE_FREE_CLOSEABLE_STREAMEX, RETAIN_ALL, RUNTIME, SEALED, SERIALPERSISTENTFIELDS, SERIALVERSIONUID, SHORT, SINCE, SPRING, 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, TOSTRING, TYPE, TYPE_PARAMETER_TARGET, TYPE_USE_TARGET, TYPEBINDING, UPPER_ANNOTATION_TYPE, UPPER_CLASS, UPPER_CONSTRUCTOR, UPPER_FIELD, UPPER_LOCAL_VARIABLE, UPPER_METHOD, UPPER_MODULE, UPPER_PACKAGE, UPPER_PARAMETER, UPPER_RECORD_COMPONENT, UPPER_RUNTIME, UPPER_SOURCE, UTIL, VALIDATE_CLASS, VALUE, VALUEOF, VALUES, VAR, VOID, WILDCARD_CAPTURE, WILDCARD_CAPTURE_NAME_PREFIX, WILDCARD_CAPTURE_NAME_SUFFIX, WILDCARD_CAPTURE_SIGNABLE_NAME_SUFFIX, WILDCARD_EXTENDS, WILDCARD_MINUS, WILDCARD_NAME, WILDCARD_PLUS, WILDCARD_STAR, WILDCARD_SUPER, WRITEOBJECT, WRITEREPLACE, YIELD, ZIP
-
Konstruktorübersicht
KonstruktorBeschreibungLoopingFlowContext
(FlowContext parent, FlowInfo upstreamNullFlowInfo, ASTNode associatedNode, BranchLabel breakLabel, BranchLabel continueLabel, Scope associatedScope, boolean isPreTest) -
Methodenübersicht
Modifizierer und TypMethodeBeschreibungvoid
complainOnDeferredFinalChecks
(BlockScope scope, FlowInfo flowInfo) Perform deferred checks relative to final variables duplicate initialization of lack of initialization.void
complainOnDeferredNullChecks
(BlockScope scope, FlowInfo callerFlowInfo) Perform deferred checks relative to the null status of local variables.void
complainOnDeferredNullChecks
(BlockScope scope, FlowInfo callerFlowInfo, boolean updateInitsOnBreak) boolean
protected boolean
internalRecordNullityMismatch
(Expression expression, TypeBinding providedType, FlowInfo flowInfo, int nullStatus, NullAnnotationMatching nullAnnotationStatus, TypeBinding expectedType, int checkType) boolean
boolean
void
recordBreakTo
(FlowContext targetContext) void
recordCatchContextOfEscapingException
(ExceptionHandlingFlowContext catchingContext, ReferenceBinding caughtException, FlowInfo exceptionInfo) void
recordContinueFrom
(FlowContext innerFlowContext, FlowInfo flowInfo) boolean
recordExitAgainstResource
(BlockScope scope, FlowInfo flowInfo, FakedTrackingVariable trackingVar, ASTNode reference) Record the fact that we see an early exit (in 'reference') while 'trackingVar' is in scope and may be unclosed.protected boolean
recordFinalAssignment
(VariableBinding binding, Reference finalAssignment) protected void
recordNullReferenceWithAnnotationStatus
(LocalVariableBinding local, ASTNode expression, int checkType, FlowInfo nullInfo, NullAnnotationMatching nullAnnotationStatus) Record a null reference for use by deferred checks.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.void
simulateThrowAfterLoopBack
(FlowInfo flowInfo) Von Klasse geerbte Methoden org.aspectj.org.eclipse.jdt.internal.compiler.flow.SwitchFlowContext
breakLabel, isBreakable, recordBreakFrom
Von Klasse geerbte Methoden org.aspectj.org.eclipse.jdt.internal.compiler.flow.FlowContext
checkExceptionHandlers, checkExceptionHandlers, checkExceptionHandlers, checkUnboxing, copyNullCheckedFieldsFrom, expireNullCheckedFieldInfo, extendTimeToLiveForNullCheckedField, getInitializationContext, getInitsForFinalBlankInitializationCheck, getLocalParent, getTargetContextForBreakLabel, getTargetContextForContinueLabel, getTargetContextForDefaultBreak, getTargetContextForDefaultContinue, getTargetContextForDefaultYield, initsOnBreak, initsOnReturn, isNonReturningContext, isNullcheckedFieldAccess, isSubRoutine, labelName, markFinallyNullStatus, mergeFinallyNullInfo, recordAbruptExit, recordNullCheckedFieldReference, recordNullityMismatch, recordNullReference, recordProvidedExpectedTypes, recordReturnFrom, recordSettingFinal, subroutine, toString
-
Felddetails
-
continueLabel
-
initsOnContinue
-
-
Konstruktordetails
-
LoopingFlowContext
public LoopingFlowContext(FlowContext parent, FlowInfo upstreamNullFlowInfo, ASTNode associatedNode, BranchLabel breakLabel, BranchLabel continueLabel, Scope associatedScope, boolean isPreTest)
-
-
Methodendetails
-
complainOnDeferredFinalChecks
Perform deferred checks relative to final variables duplicate initialization of lack of initialization.- Parameter:
scope
- the scope to which this context is associatedflowInfo
- the flow info against which checks must be performed
-
complainOnDeferredNullChecks
Perform deferred checks relative to the null status of local variables.- Parameter:
scope
- the scope to which this context is associatedcallerFlowInfo
- the flow info against which checks must be performed
-
complainOnDeferredNullChecks
public void complainOnDeferredNullChecks(BlockScope scope, FlowInfo callerFlowInfo, boolean updateInitsOnBreak) -
continueLabel
- Setzt außer Kraft:
continueLabel
in KlasseFlowContext
-
individualToString
- Setzt außer Kraft:
individualToString
in KlasseSwitchFlowContext
-
isContinuable
public boolean isContinuable()- Setzt außer Kraft:
isContinuable
in KlasseFlowContext
-
isContinuedTo
public boolean isContinuedTo() -
recordBreakTo
- Setzt außer Kraft:
recordBreakTo
in KlasseFlowContext
-
recordContinueFrom
- Setzt außer Kraft:
recordContinueFrom
in KlasseFlowContext
-
recordFinalAssignment
- Setzt außer Kraft:
recordFinalAssignment
in KlasseFlowContext
-
recordNullReferenceWithAnnotationStatus
protected void recordNullReferenceWithAnnotationStatus(LocalVariableBinding local, ASTNode expression, int checkType, FlowInfo nullInfo, NullAnnotationMatching nullAnnotationStatus) Beschreibung aus Klasse kopiert:FlowContext
Record a null reference for use by deferred checks. Only looping or finally contexts really record that information. Other contexts immediately check for unboxing.- Setzt außer Kraft:
recordNullReferenceWithAnnotationStatus
in KlasseFlowContext
- Parameter:
local
- the local variable involved in the checkexpression
- 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 ofCAN_ONLY_NULL
,CAN_ONLY_NULL_NON_NULL
,MAY_NULL
,CAN_ONLY_NON_NULL
, potentially combined with a context indicator (one ofFlowContext.IN_COMPARISON_NULL
,FlowContext.IN_COMPARISON_NON_NULL
,FlowContext.IN_ASSIGNMENT
orFlowContext.IN_INSTANCEOF
).
Alternatively, aFlowContext.IN_UNBOXING
check can e requested.nullInfo
- the null flow info observed at this first visit of location.nullAnnotationStatus
- if null annotations are analysed this may hold more information about the exact kind of problem, can benull
-
recordUnboxing
Beschreibung aus Klasse kopiert:FlowContext
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.- Setzt außer Kraft:
recordUnboxing
in KlasseFlowContext
- Parameter:
nullStatus
- the status as we know it so far.
-
recordExitAgainstResource
public boolean recordExitAgainstResource(BlockScope scope, FlowInfo flowInfo, FakedTrackingVariable trackingVar, ASTNode reference) Record the fact that we see an early exit (in 'reference') while 'trackingVar' is in scope and may be unclosed.- Setzt außer Kraft:
recordExitAgainstResource
in KlasseFlowContext
- Parameter:
scope
- enclosing scopeflowInfo
- flowInfo at the point of the early exittrackingVar
- representation of the resourcereference
- the return or throw statement marking the early exit- Gibt zurück:
- true if the situation has been handled by this flow context.
-
recordUsingNullReference
public void recordUsingNullReference(Scope scope, LocalVariableBinding local, ASTNode location, int checkType, FlowInfo flowInfo) Beschreibung aus Klasse kopiert: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).- Setzt außer Kraft:
recordUsingNullReference
in KlasseFlowContext
- Parameter:
scope
- the scope into which the check is performedlocal
- the local variable involved in the checklocation
- 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 ofCAN_ONLY_NULL
,CAN_ONLY_NULL_NON_NULL
,MAY_NULL
, potentially combined with a context indicator (one ofFlowContext.IN_COMPARISON_NULL
,FlowContext.IN_COMPARISON_NON_NULL
,FlowContext.IN_ASSIGNMENT
orFlowContext.IN_INSTANCEOF
) and a bit to indicate whether the reference is being recorded inside an assert,FlowContext.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)
-
simulateThrowAfterLoopBack
-
recordCatchContextOfEscapingException
public void recordCatchContextOfEscapingException(ExceptionHandlingFlowContext catchingContext, ReferenceBinding caughtException, FlowInfo exceptionInfo) -
hasEscapingExceptions
public boolean hasEscapingExceptions() -
internalRecordNullityMismatch
protected boolean internalRecordNullityMismatch(Expression expression, TypeBinding providedType, FlowInfo flowInfo, int nullStatus, NullAnnotationMatching nullAnnotationStatus, TypeBinding expectedType, int checkType) - Setzt außer Kraft:
internalRecordNullityMismatch
in KlasseFlowContext
-