Verwendungen von Klasse
org.aspectj.org.eclipse.jdt.internal.compiler.flow.FlowInfo
Packages, die FlowInfo verwenden
Package
Beschreibung
-
Verwendungen von FlowInfo in org.aspectj.ajdt.internal.compiler.ast
Methoden in org.aspectj.ajdt.internal.compiler.ast mit Parametern vom Typ FlowInfoModifizierer und TypMethodeBeschreibungvoidDeclareAnnotationDeclaration.analyseCode(ClassScope classScope, FlowContext flowContext, FlowInfo flowInfo) voidInterTypeMethodDeclaration.analyseCode(ClassScope classScope, FlowContext flowContext, FlowInfo flowInfo) -
Verwendungen von FlowInfo in org.aspectj.org.eclipse.jdt.internal.codeassist.complete
Methoden in org.aspectj.org.eclipse.jdt.internal.codeassist.complete, die FlowInfo zurückgebenModifizierer und TypMethodeBeschreibungCompletionOnBreakStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) CompletionOnContinueStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Methoden in org.aspectj.org.eclipse.jdt.internal.codeassist.complete mit Parametern vom Typ FlowInfoModifizierer und TypMethodeBeschreibungCompletionOnBreakStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) CompletionOnContinueStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) -
Verwendungen von FlowInfo in org.aspectj.org.eclipse.jdt.internal.compiler.ast
Methoden in org.aspectj.org.eclipse.jdt.internal.compiler.ast, die FlowInfo zurückgebenModifizierer und TypMethodeBeschreibungArrayReference.analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean compoundAssignment) FieldReference.analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean isCompound) QualifiedNameReference.analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean isCompound) abstract FlowInfoReference.analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean isCompound) SingleNameReference.analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean isCompound) ThisReference.analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean isCompound) static FlowInfoFakedTrackingVariable.analyseCloseableAcquisition(BlockScope scope, FlowInfo flowInfo, MessageSend acquisition) Check if a message send acquires a closeable from its receiver, see: Bug 463320 - [compiler][resource] potential "resource leak" problem disappears when local variable inlinedAbstractVariableDeclaration.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) AllocationExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) AND_AND_Expression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ArrayAllocationExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ArrayInitializer.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ArrayReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) AssertStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Assignment.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) BinaryExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Block.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) BreakStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) CaseStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) CastExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ClassLiteralAccess.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) CombinedBinaryExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) CompoundAssignment.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ConditionalExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ContinueStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) DoStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) EmptyStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) EqualExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ExplicitConstructorCall.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Expression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Expression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, boolean valueRequired) More sophisticated for of the flow analysis used for analyzing expressions, and be able to optimize out portions of expressions where no actual value is required.FieldDeclaration.analyseCode(MethodScope initializationScope, FlowContext flowContext, FlowInfo flowInfo) FieldReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) FieldReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, boolean valueRequired) ForeachStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ForStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) GuardedPattern.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) IfStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Initializer.analyseCode(MethodScope currentScope, FlowContext flowContext, FlowInfo flowInfo) InstanceOfExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) LabeledStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) LambdaExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Literal.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) LocalDeclaration.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) MessageSend.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) OR_OR_Expression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) QualifiedAllocationExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) QualifiedNameReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) QualifiedNameReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, boolean valueRequired) QualifiedThisReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) QualifiedThisReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, boolean valueRequired) RecordComponent.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) RecordPattern.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Reference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ReferenceExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ReturnStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) SingleNameReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) SingleNameReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, boolean valueRequired) abstract FlowInfoStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) SwitchExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) SwitchStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) SynchronizedStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ThrowStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) TryStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) TypeDeclaration.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Flow analysis for a local innertypeTypePattern.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) TypeReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) UnaryExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) WhileStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) YieldStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) static FlowInfoFakedTrackingVariable.markPassedToOutside(BlockScope scope, Expression expression, FlowInfo flowInfo, FlowContext flowContext, boolean owned) Mark that this resource is passed to some outside code (as argument to a method/ctor call or as a return value from the current method), and thus should be considered as potentially closed.Methoden in org.aspectj.org.eclipse.jdt.internal.compiler.ast mit Parametern vom Typ FlowInfoModifizierer und TypMethodeBeschreibungprotected voidStatement.analyseArguments(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, MethodBinding methodBinding, Expression[] arguments) Analysing arguments of MessageSend, ExplicitConstructorCall, AllocationExpression.ArrayReference.analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean compoundAssignment) FieldReference.analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean isCompound) QualifiedNameReference.analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean isCompound) abstract FlowInfoReference.analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean isCompound) SingleNameReference.analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean isCompound) ThisReference.analyseAssignment(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, Assignment assignment, boolean isCompound) static FlowInfoFakedTrackingVariable.analyseCloseableAcquisition(BlockScope scope, FlowInfo flowInfo, MessageSend acquisition) Check if a message send acquires a closeable from its receiver, see: Bug 463320 - [compiler][resource] potential "resource leak" problem disappears when local variable inlinedstatic voidFakedTrackingVariable.analyseCloseableAllocation(BlockScope scope, FlowInfo flowInfo, AllocationExpression allocation) Compute/assign a tracking variable for a freshly allocated closeable value, using information from our white lists.AbstractVariableDeclaration.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) AllocationExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) AND_AND_Expression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ArrayAllocationExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ArrayInitializer.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ArrayReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) AssertStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Assignment.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) BinaryExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Block.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) BreakStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) CaseStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) CastExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ClassLiteralAccess.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) voidClinit.analyseCode(ClassScope classScope, InitializationFlowContext staticInitializerFlowContext, FlowInfo flowInfo) CombinedBinaryExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) voidCompactConstructorDeclaration.analyseCode(ClassScope classScope, InitializationFlowContext initializerFlowContext, FlowInfo flowInfo, int initialReachMode) CompoundAssignment.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ConditionalExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) voidConstructorDeclaration.analyseCode(ClassScope classScope, InitializationFlowContext initializerFlowContext, FlowInfo flowInfo, int initialReachMode) The flowInfo corresponds to non-static field initialization infos.ContinueStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) DoStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) EmptyStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) EqualExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ExplicitConstructorCall.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Expression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Expression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, boolean valueRequired) More sophisticated for of the flow analysis used for analyzing expressions, and be able to optimize out portions of expressions where no actual value is required.FieldDeclaration.analyseCode(MethodScope initializationScope, FlowContext flowContext, FlowInfo flowInfo) FieldReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) FieldReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, boolean valueRequired) ForeachStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ForStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) GuardedPattern.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) IfStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Initializer.analyseCode(MethodScope currentScope, FlowContext flowContext, FlowInfo flowInfo) InstanceOfExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) LabeledStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) LambdaExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Literal.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) LocalDeclaration.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) MessageSend.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) voidMethodDeclaration.analyseCode(ClassScope classScope, FlowContext flowContext, FlowInfo flowInfo) OR_OR_Expression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) QualifiedAllocationExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) QualifiedNameReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) QualifiedNameReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, boolean valueRequired) QualifiedThisReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) QualifiedThisReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, boolean valueRequired) RecordComponent.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) RecordPattern.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Reference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ReferenceExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ReturnStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) SingleNameReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) SingleNameReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo, boolean valueRequired) abstract FlowInfoStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) SwitchExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) SwitchStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) SynchronizedStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) ThrowStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) TryStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) TypeDeclaration.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Flow analysis for a local innertypevoidTypeDeclaration.analyseCode(ClassScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Flow analysis for a local member innertypeTypePattern.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) TypeReference.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) UnaryExpression.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) WhileStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) YieldStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) protected voidStatement.checkAgainstNullTypeAnnotation(BlockScope scope, TypeBinding requiredType, Expression expression, FlowContext flowContext, FlowInfo flowInfo) protected voidCompactConstructorDeclaration.checkAndGenerateFieldAssignment(FlowContext flowContext, FlowInfo flowInfo, FieldBinding[] fields) protected voidConstructorDeclaration.checkAndGenerateFieldAssignment(FlowContext flowContext, FlowInfo flowInfo, FieldBinding[] fields) static intNullAnnotationMatching.checkAssignment(BlockScope currentScope, FlowContext flowContext, VariableBinding var, FlowInfo flowInfo, int nullStatus, Expression expression, TypeBinding providedType) Check null-ness of 'var' against a possible null annotationvoidAllocationExpression.checkCapturedLocalInitializationIfNecessary(ReferenceBinding checkedType, BlockScope currentScope, FlowInfo flowInfo) booleanArrayReference.checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) booleanCastExpression.checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) booleanConditionalExpression.checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) booleanExpression.checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo) booleanExpression.checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) Check this expression against potential NPEs, which may occur: if the expression is the receiver in a field access, qualified allocation, array reference or message send incl. implicit message sends like it happens for the collection in a foreach statement. if the expression is subject to unboxing if the expression is the exception in a throw statement If a risk of NPE is detected report it to the context.booleanFieldReference.checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) booleanMessageSend.checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) booleanQualifiedNameReference.checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) booleanReference.checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) booleanSingleNameReference.checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) booleanSwitchExpression.checkNPE(BlockScope skope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) booleanThisReference.checkNPE(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo, int ttlForFieldCheck) protected voidExpression.checkNPEbyUnboxing(BlockScope scope, FlowContext flowContext, FlowInfo flowInfo) If this expression requires unboxing check if that operation can throw NPE.static voidFakedTrackingVariable.cleanUpUnassigned(BlockScope scope, ASTNode location, FlowInfo flowInfo) Unassigned closeables are not visible beyond their enclosing statement, immediately report Ungültige Eingabe: "&" remove after each statement.intEmptyStatement.complainIfUnreachable(FlowInfo flowInfo, BlockScope scope, int complaintLevel, boolean endOfBlock) intStatement.complainIfUnreachable(FlowInfo flowInfo, BlockScope scope, int previousComplaintLevel, boolean endOfBlock) protected voidCompactConstructorDeclaration.doFieldReachAnalysis(FlowInfo flowInfo, FieldBinding[] fields) protected voidConstructorDeclaration.doFieldReachAnalysis(FlowInfo flowInfo, FieldBinding[] fields) intFakedTrackingVariable.findMostSpecificStatus(FlowInfo flowInfo, BlockScope currentScope, BlockScope locationScope) static FakedTrackingVariableFakedTrackingVariable.getCloseTrackingVariable(Expression expression, FlowInfo flowInfo, FlowContext flowContext) If expression resolves to a value of type AutoCloseable answer the variable that tracks closing of that local.static voidFakedTrackingVariable.handleResourceAssignment(BlockScope scope, FlowInfo upstreamInfo, FlowInfo flowInfo, FlowContext flowContext, ASTNode location, Expression rhs, LocalVariableBinding local) Given the rhs of an assignment or local declaration has a (Auto)Closeable type (or null), setup for leak analysis now: Create or re-use a tracking variable, and wire and initialize everything.booleanFakedTrackingVariable.hasDefinitelyNoResource(FlowInfo flowInfo) Answer true if we know for sure that no resource is bound to this variable at the point of 'flowInfo'.voidAllocationExpression.manageEnclosingInstanceAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) voidQualifiedAllocationExpression.manageEnclosingInstanceAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) voidQualifiedNameReference.manageEnclosingInstanceAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) voidSingleNameReference.manageEnclosingInstanceAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) voidTypeDeclaration.manageEnclosingInstanceAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) voidTypeDeclaration.manageEnclosingInstanceAccessIfNecessary(ClassScope currentScope, FlowInfo flowInfo) Access emulation for a local member type force to emulation of access to direct enclosing instance.voidAllocationExpression.manageSyntheticAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) voidAssertStatement.manageSyntheticAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) voidExplicitConstructorCall.manageSyntheticAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) voidFieldReference.manageSyntheticAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo, boolean isReadAccess) voidMessageSend.manageSyntheticAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) voidQualifiedNameReference.manageSyntheticAccessIfNecessary(BlockScope currentScope, FieldBinding fieldBinding, int index, FlowInfo flowInfo) index is Ungültige Eingabe: "<"0 to denote write access emulationvoidReferenceExpression.manageSyntheticAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) voidSingleNameReference.manageSyntheticAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo, boolean isReadAccess) voidFakedTrackingVariable.markClose(FlowInfo flowInfo, FlowContext flowContext) Mark that this resource is closed locally.static FlowInfoFakedTrackingVariable.markPassedToOutside(BlockScope scope, Expression expression, FlowInfo flowInfo, FlowContext flowContext, boolean owned) Mark that this resource is passed to some outside code (as argument to a method/ctor call or as a return value from the current method), and thus should be considered as potentially closed.intArrayReference.nullStatus(FlowInfo flowInfo, FlowContext flowContext) intAssignment.nullStatus(FlowInfo flowInfo, FlowContext flowContext) intCastExpression.nullStatus(FlowInfo flowInfo, FlowContext flowContext) intCompoundAssignment.nullStatus(FlowInfo flowInfo, FlowContext flowContext) intConditionalExpression.nullStatus(FlowInfo flowInfo, FlowContext flowContext) intExpression.nullStatus(FlowInfo flowInfo, FlowContext flowContext) intFunctionalExpression.nullStatus(FlowInfo flowInfo) intMessageSend.nullStatus(FlowInfo flowInfo, FlowContext flowContext) intNullLiteral.nullStatus(FlowInfo flowInfo, FlowContext flowContext) intReference.nullStatus(FlowInfo flowInfo, FlowContext flowContext) intSingleNameReference.nullStatus(FlowInfo flowInfo, FlowContext flowContext) intSwitchExpression.nullStatus(FlowInfo flowInfo, FlowContext flowContext) intThisReference.nullStatus(FlowInfo flowInfo, FlowContext flowContext) static FakedTrackingVariableFakedTrackingVariable.preConnectTrackerAcrossAssignment(ASTNode location, LocalVariableBinding local, Expression rhs, FlowInfo flowInfo) Before analyzing an assignment of this shape:singleName = new Allocation()connect any tracking variable of the LHS with the allocation on the RHS.protected voidBinaryExpression.updateFlowOnBooleanResult(FlowInfo flowInfo, boolean result) protected voidExpression.updateFlowOnBooleanResult(FlowInfo flowInfo, boolean result) Back-propagation of flow info: before analysing a branch where a given condition is known to hold true/false respectively, ask the condition to contribute its information to the given flowInfo.protected voidMessageSend.updateFlowOnBooleanResult(FlowInfo flowInfo, boolean result) protected voidUnaryExpression.updateFlowOnBooleanResult(FlowInfo flowInfo, boolean result) Konstruktoren in org.aspectj.org.eclipse.jdt.internal.compiler.ast mit Parametern vom Typ FlowInfoModifiziererKonstruktorBeschreibungFakedTrackingVariable(LocalVariableBinding original, ASTNode location, FlowInfo flowInfo, FlowContext flowContext, int nullStatus) -
Verwendungen von FlowInfo in org.aspectj.org.eclipse.jdt.internal.compiler.flow
Unterklassen von FlowInfo in org.aspectj.org.eclipse.jdt.internal.compiler.flowModifizierer und TypKlasseBeschreibungclassRecord conditional initialization status during definite assignment analysisclassRecord initialization status during definite assignment analysis No caching of pre-allocated instances.Felder in org.aspectj.org.eclipse.jdt.internal.compiler.flow, die deklariert sind als FlowInfoModifizierer und TypFeldBeschreibungFlowInfo[]InitializationFlowContext.exceptionThrowerFlowInfosInitializationFlowContext.initsBeforeContextFlowContext.initsOnFinallyConditionalFlowInfo.initsWhenFalseConditionalFlowInfo.initsWhenTrueMethoden in org.aspectj.org.eclipse.jdt.internal.compiler.flow, die FlowInfo zurückgebenModifizierer und TypMethodeBeschreibungConditionalFlowInfo.addInitializationsFrom(FlowInfo otherInits) abstract FlowInfoFlowInfo.addInitializationsFrom(FlowInfo otherInits) Add other inits to this flow info, then return this.UnconditionalFlowInfo.addInitializationsFrom(FlowInfo inits) ConditionalFlowInfo.addNullInfoFrom(FlowInfo otherInits) abstract FlowInfoFlowInfo.addNullInfoFrom(FlowInfo otherInits) Add all null information from otherInits to this flow info and return this.UnconditionalFlowInfo.addNullInfoFrom(FlowInfo inits) ConditionalFlowInfo.addPotentialInitializationsFrom(FlowInfo otherInits) abstract FlowInfoFlowInfo.addPotentialInitializationsFrom(FlowInfo otherInits) Compose other inits over this flow info, then return this.UnconditionalFlowInfo.addPotentialInitializationsFrom(FlowInfo inits) ConditionalFlowInfo.asNegatedCondition()FlowInfo.asNegatedCondition()static FlowInfoFlowInfo.conditional(FlowInfo initsWhenTrue, FlowInfo initsWhenFalse) ConditionalFlowInfo.copy()abstract FlowInfoFlowInfo.copy()Return a deep copy of the current instance.UnconditionalFlowInfo.copy()FlowContext.getInitsForFinalBlankInitializationCheck(TypeBinding declaringType, FlowInfo flowInfo) FlowContext.initsOnBreak()ConditionalFlowInfo.initsWhenFalse()abstract FlowInfoFlowInfo.initsWhenFalse()Return the flow info that would result from the path associated to the value false for the condition expression that generated this flow info.UnconditionalFlowInfo.initsWhenFalse()ConditionalFlowInfo.initsWhenTrue()abstract FlowInfoFlowInfo.initsWhenTrue()Return the flow info that would result from the path associated to the value true for the condition expression that generated this flow info.UnconditionalFlowInfo.initsWhenTrue()ConditionalFlowInfo.safeInitsWhenTrue()abstract FlowInfoFlowInfo.safeInitsWhenTrue()Return a flow info that carries the same information as the result ofinitsWhenTrue, but warrantied to be different from this.
Caveat: side effects on the result may affect components of this.UnconditionalFlowInfo.safeInitsWhenTrue()ConditionalFlowInfo.setReachMode(int reachMode) abstract FlowInfoFlowInfo.setReachMode(int reachMode) Set this flow info reach mode and return this.UnconditionalFlowInfo.setReachMode(int reachMode) Methoden in org.aspectj.org.eclipse.jdt.internal.compiler.flow mit Parametern vom Typ FlowInfoModifizierer und TypMethodeBeschreibungConditionalFlowInfo.addInitializationsFrom(FlowInfo otherInits) abstract FlowInfoFlowInfo.addInitializationsFrom(FlowInfo otherInits) Add other inits to this flow info, then return this.UnconditionalFlowInfo.addInitializationsFrom(FlowInfo inits) ConditionalFlowInfo.addNullInfoFrom(FlowInfo otherInits) abstract FlowInfoFlowInfo.addNullInfoFrom(FlowInfo otherInits) Add all null information from otherInits to this flow info and return this.UnconditionalFlowInfo.addNullInfoFrom(FlowInfo inits) ConditionalFlowInfo.addPotentialInitializationsFrom(FlowInfo otherInits) abstract FlowInfoFlowInfo.addPotentialInitializationsFrom(FlowInfo otherInits) Compose other inits over this flow info, then return this.UnconditionalFlowInfo.addPotentialInitializationsFrom(FlowInfo inits) voidFlowContext.checkExceptionHandlers(TypeBinding[] raisedExceptions, ASTNode location, FlowInfo flowInfo, BlockScope scope) voidFlowContext.checkExceptionHandlers(TypeBinding raisedException, ASTNode location, FlowInfo flowInfo, BlockScope scope) voidFlowContext.checkExceptionHandlers(TypeBinding raisedException, ASTNode location, FlowInfo flowInfo, BlockScope scope, boolean isExceptionOnAutoClose) voidInitializationFlowContext.checkInitializerExceptions(BlockScope currentScope, FlowContext initializerContext, FlowInfo flowInfo) protected voidFlowContext.checkUnboxing(Scope scope, Expression expression, FlowInfo flowInfo) During deferred checking re-visit a previously recording unboxing situation.voidFinallyFlowContext.complainOnDeferredChecks(FlowInfo flowInfo, BlockScope scope) Given some contextual initialization info (derived from a try block or a catch block), this code will check that the subroutine context does not also initialize a final variable potentially set redundantly.voidLoopingFlowContext.complainOnDeferredFinalChecks(BlockScope scope, FlowInfo flowInfo) Perform deferred checks relative to final variables duplicate initialization of lack of initialization.voidLoopingFlowContext.complainOnDeferredNullChecks(BlockScope scope, FlowInfo callerFlowInfo) Perform deferred checks relative to the null status of local variables.voidLoopingFlowContext.complainOnDeferredNullChecks(BlockScope scope, FlowInfo callerFlowInfo, boolean updateInitsOnBreak) static FlowInfoFlowInfo.conditional(FlowInfo initsWhenTrue, FlowInfo initsWhenFalse) FlowContext.getInitsForFinalBlankInitializationCheck(TypeBinding declaringType, FlowInfo flowInfo) protected booleanFinallyFlowContext.internalRecordNullityMismatch(Expression expression, TypeBinding providedType, FlowInfo flowInfo, int nullStatus, NullAnnotationMatching nullAnnotationStatus, TypeBinding expectedType, int checkType) protected booleanFlowContext.internalRecordNullityMismatch(Expression expression, TypeBinding providedType, FlowInfo flowInfo, int nullStatus, NullAnnotationMatching nullAnnotationStatus, TypeBinding expectedType, int checkType) protected booleanLoopingFlowContext.internalRecordNullityMismatch(Expression expression, TypeBinding providedType, FlowInfo flowInfo, int nullStatus, NullAnnotationMatching nullAnnotationStatus, TypeBinding expectedType, int checkType) static UnconditionalFlowInfoFlowInfo.mergedOptimizedBranches(FlowInfo initsWhenTrue, boolean isOptimizedTrue, FlowInfo initsWhenFalse, boolean isOptimizedFalse, boolean allowFakeDeadBranch) Merge branches using optimized boolean conditionsstatic UnconditionalFlowInfoFlowInfo.mergedOptimizedBranchesIfElse(FlowInfo initsWhenTrue, boolean isOptimizedTrue, FlowInfo initsWhenFalse, boolean isOptimizedFalse, boolean allowFakeDeadBranch, FlowInfo flowInfo, IfStatement ifStatement, boolean reportDeadCodeInKnownPattern) Merge if-else branches using optimized boolean conditionsvoidFlowContext.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.voidTryFlowContext.mergeFinallyNullInfo(FlowInfo flowInfo) voidFlowContext.recordBreakFrom(FlowInfo flowInfo) voidSwitchFlowContext.recordBreakFrom(FlowInfo flowInfo) voidLoopingFlowContext.recordCatchContextOfEscapingException(ExceptionHandlingFlowContext catchingContext, ReferenceBinding caughtException, FlowInfo exceptionInfo) voidFlowContext.recordContinueFrom(FlowContext innerFlowContext, FlowInfo flowInfo) voidLoopingFlowContext.recordContinueFrom(FlowContext innerFlowContext, FlowInfo flowInfo) booleanFlowContext.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.booleanLoopingFlowContext.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.voidFlowContext.recordNullityMismatch(BlockScope currentScope, Expression expression, TypeBinding providedType, TypeBinding expectedType, FlowInfo flowInfo, int nullStatus, NullAnnotationMatching annotationStatus) Record that a nullity mismatch was detected against an annotated type reference.protected final voidFlowContext.recordNullReference(LocalVariableBinding local, ASTNode location, int checkType, FlowInfo nullInfo) Record a null reference for use by deferred checks.protected voidFinallyFlowContext.recordNullReferenceWithAnnotationStatus(LocalVariableBinding local, ASTNode expression, int checkType, FlowInfo nullInfo, NullAnnotationMatching nullAnnotationStatus) protected voidFlowContext.recordNullReferenceWithAnnotationStatus(LocalVariableBinding local, ASTNode location, int checkType, FlowInfo nullInfo, NullAnnotationMatching nullAnnotationStatus) Record a null reference for use by deferred checks.protected voidLoopingFlowContext.recordNullReferenceWithAnnotationStatus(LocalVariableBinding local, ASTNode expression, int checkType, FlowInfo nullInfo, NullAnnotationMatching nullAnnotationStatus) voidFlowContext.recordSettingFinal(VariableBinding variable, Reference finalReference, FlowInfo flowInfo) voidFinallyFlowContext.recordUnboxing(Scope scope, Expression expression, int nullStatus, FlowInfo flowInfo) voidFlowContext.recordUnboxing(Scope scope, Expression expression, int nullStatus, FlowInfo flowInfo) Either AST analysis or checking of a child flow context has encountered an unboxing situation.voidLoopingFlowContext.recordUnboxing(Scope scope, Expression expression, int nullStatus, FlowInfo flowInfo) voidFinallyFlowContext.recordUsingNullReference(Scope scope, LocalVariableBinding local, ASTNode location, int checkType, FlowInfo flowInfo) voidFlowContext.recordUsingNullReference(Scope scope, LocalVariableBinding local, ASTNode location, int checkType, FlowInfo flowInfo) Record a null reference for use by deferred checks.voidLoopingFlowContext.recordUsingNullReference(Scope scope, LocalVariableBinding local, ASTNode location, int checkType, FlowInfo flowInfo) voidLoopingFlowContext.simulateThrowAfterLoopBack(FlowInfo flowInfo) Konstruktoren in org.aspectj.org.eclipse.jdt.internal.compiler.flow mit Parametern vom Typ FlowInfoModifiziererKonstruktorBeschreibungExceptionHandlingFlowContext(FlowContext parent, TryStatement tryStatement, ReferenceBinding[] handledExceptions, int[] exceptionToCatchBlockMap, FlowContext initializationParent, BlockScope scope, FlowInfo flowInfo) InitializationFlowContext(FlowContext parent, ASTNode associatedNode, FlowInfo initsBeforeContext, FlowContext initializationParent, BlockScope scope) LoopingFlowContext(FlowContext parent, FlowInfo upstreamNullFlowInfo, ASTNode associatedNode, BranchLabel breakLabel, BranchLabel continueLabel, Scope associatedScope, boolean isPreTest) -
Verwendungen von FlowInfo in org.aspectj.org.eclipse.jdt.internal.compiler.lookup
Felder in org.aspectj.org.eclipse.jdt.internal.compiler.lookup, die deklariert sind als FlowInfoModifizierer und TypFeldBeschreibungBlockScope.finallyInfoUsed only during analyseCode and only for checking if a resource was closed in a finallyBlock.Methoden in org.aspectj.org.eclipse.jdt.internal.compiler.lookup mit Parametern vom Typ FlowInfoModifizierer und TypMethodeBeschreibungvoidBlockScope.checkUnclosedCloseables(FlowInfo flowInfo, FlowContext flowContext, ASTNode location, BlockScope locationScope) At the end of a block check the closing-status of all tracked closeables that are declared in this block.voidBlockScope.correlateTrackingVarsIfElse(FlowInfo thenFlowInfo, FlowInfo elseFlowInfo) If one branch of an if-else closes any AutoCloseable resource, and if the same resource is known to be null on the other branch mark it as closed, too, so that merging both branches indicates that the resource is always closed.final intMethodScope.recordInitializationStates(FlowInfo flowInfo) -
Verwendungen von FlowInfo in org.aspectj.org.eclipse.jdt.internal.eval
Methoden in org.aspectj.org.eclipse.jdt.internal.eval, die FlowInfo zurückgebenModifizierer und TypMethodeBeschreibungCodeSnippetReturnStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) Methoden in org.aspectj.org.eclipse.jdt.internal.eval mit Parametern vom Typ FlowInfoModifizierer und TypMethodeBeschreibungCodeSnippetReturnStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) voidCodeSnippetAllocationExpression.manageEnclosingInstanceAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) voidCodeSnippetAllocationExpression.manageSyntheticAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) voidCodeSnippetFieldReference.manageSyntheticAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo, boolean isReadAccess) voidCodeSnippetMessageSend.manageSyntheticAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo) voidCodeSnippetQualifiedNameReference.manageSyntheticAccessIfNecessary(BlockScope currentScope, FieldBinding fieldBinding, int index, FlowInfo flowInfo) index is Ungültige Eingabe: "<"0 to denote write access emulationvoidCodeSnippetSingleNameReference.manageSyntheticAccessIfNecessary(BlockScope currentScope, FlowInfo flowInfo, boolean isReadAccess)