Uses of Class
org.aspectj.org.eclipse.jdt.internal.compiler.flow.FlowContext
Packages that use FlowContext
Package
Description
-
Uses of FlowContext in org.aspectj.ajdt.internal.compiler.ast
Methods in org.aspectj.ajdt.internal.compiler.ast with parameters of type FlowContextModifier and TypeMethodDescriptionvoidDeclareAnnotationDeclaration.analyseCode(ClassScope classScope, FlowContext flowContext, FlowInfo flowInfo) voidInterTypeMethodDeclaration.analyseCode(ClassScope classScope, FlowContext flowContext, FlowInfo flowInfo) -
Uses of FlowContext in org.aspectj.org.eclipse.jdt.internal.codeassist.complete
Methods in org.aspectj.org.eclipse.jdt.internal.codeassist.complete with parameters of type FlowContextModifier and TypeMethodDescriptionCompletionOnBreakStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) CompletionOnContinueStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) -
Uses of FlowContext in org.aspectj.org.eclipse.jdt.internal.compiler.ast
Methods in org.aspectj.org.eclipse.jdt.internal.compiler.ast with parameters of type FlowContextModifier and TypeMethodDescriptionprotected 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, FlowContext flowContext, 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, FlowContext flowContext, 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) 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) EitherOrMultiPattern.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) StringTemplate.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) TemplateExpression.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 annotationbooleanArrayReference.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.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.protected booleanReference.checkNullableFieldDereference(Scope scope, FieldBinding field, long sourcePosition, FlowContext flowContext, int ttlForFieldCheck) static FakedTrackingVariableFakedTrackingVariable.getCloseTrackingVariable(Expression expression, FlowInfo flowInfo, FlowContext flowContext, boolean useAnnotations) 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.static voidFakedTrackingVariable.handleResourceFieldAssignment(BlockScope scope, FlowInfo flowInfo, FlowContext flowContext, ASTNode location, Expression rhs) When assigning an rhs of an (Auto)Closeable type (or null) to a field, inspect annotations to find out if the assignment assigns ownership to the instance (rather than current method).default FlowInfoInvocation.handleResourcePassedToInvocation(BlockScope currentScope, MethodBinding methodBinding, Expression argument, int rank, FlowContext flowContext, FlowInfo flowInfo) Resource leak analysis: track the case that a resource is passed as an argument to an invocation.voidFakedTrackingVariable.markClose(FlowInfo flowInfo, FlowContext flowContext) Mark that this resource is closed locally.voidFakedTrackingVariable.markNullStatus(FlowInfo flowInfo, FlowContext flowContext, int status) voidFakedTrackingVariable.markOwnedByOutside(FlowInfo flowInfo, FlowContext flowContext) 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) 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) voidEqualExpression.syntacticFieldAnalysisForFalseBranch(FlowInfo flowInfo, FlowContext flowContext) Constructors in org.aspectj.org.eclipse.jdt.internal.compiler.ast with parameters of type FlowContextModifierConstructorDescriptionFakedTrackingVariable(FieldBinding original, BlockScope scope, ASTNode location, FlowInfo flowInfo, FlowContext flowContext, int nullStatus, boolean useAnnotations) FakedTrackingVariable(LocalVariableBinding original, ASTNode location, FlowInfo flowInfo, FlowContext flowContext, int nullStatus, boolean useAnnotations) FakedTrackingVariable(LocalVariableBinding original, BlockScope scope, ASTNode location, FlowInfo flowInfo, FlowContext flowContext, int nullStatus, boolean useAnnotations) -
Uses of FlowContext in org.aspectj.org.eclipse.jdt.internal.compiler.flow
Subclasses of FlowContext in org.aspectj.org.eclipse.jdt.internal.compiler.flowModifier and TypeClassDescriptionclassReflects the context of code analysis, keeping track of enclosing try statements, exception handlers, etc...classReflects the context of code analysis, keeping track of enclosing try statements, exception handlers, etc...classFor instances of this class,getInitsForFinalBlankInitializationCheck(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding, FlowInfo)will returns aFlowInfo.DEAD_END, which for whichFlowInfo.isDefinitelyAssigned(org.aspectj.org.eclipse.jdt.internal.compiler.lookup.FieldBinding)returns true for all fields.classReflects the context of code analysis, keeping track of enclosing try statements, exception handlers, etc...classReflects the context of code analysis, keeping track of enclosing try statements, exception handlers, etc...classReflects the context of code analysis, keeping track of enclosing try statements, exception handlers, etc...classReflects the context of code analysis, keeping track of enclosing try statements, exception handlers, etc...classReflects the context of code analysis, keeping track of enclosing try statements, exception handlers, etc...classReflects the context of code analysis, keeping track of enclosing try statements, exception handlers, etc...classShared implementation for try-statement-related flow contexts.Fields in org.aspectj.org.eclipse.jdt.internal.compiler.flow declared as FlowContextModifier and TypeFieldDescriptionExceptionHandlingFlowContext.initializationParentstatic final FlowContextFlowContext.NonLocalGotoThroughSwitchContextstatic final FlowContextFlowContext.NotContinuableContextTryFlowContext.outerTryContextFor a try statement nested inside a finally block this reference points to the flow context of the outer try block, for access to its initsOnFinally.FlowContext.parentFinallyFlowContext.tryContextMethods in org.aspectj.org.eclipse.jdt.internal.compiler.flow that return FlowContextModifier and TypeMethodDescriptionExceptionHandlingFlowContext.getInitializationContext()FlowContext.getInitializationContext()Answer flow context that corresponds to initialization.InitializationFlowContext.getInitializationContext()FlowContext.getLocalParent()Answer the parent flow context but be careful not to cross the boundary of a nested type, or null if no such parent exists.FlowContext.getTargetContextForBreakLabel(char[] labelName) FlowContext.getTargetContextForContinueLabel(char[] labelName) FlowContext.getTargetContextForDefaultBreak()FlowContext.getTargetContextForDefaultContinue()FlowContext.getTargetContextForYield(boolean requireExpression) Methods in org.aspectj.org.eclipse.jdt.internal.compiler.flow with parameters of type FlowContextModifier and TypeMethodDescriptionvoidInitializationFlowContext.checkInitializerExceptions(BlockScope currentScope, FlowContext initializerContext, FlowInfo flowInfo) voidFlowContext.copyNullCheckedFieldsFrom(FlowContext other) voidFlowContext.recordBreakTo(FlowContext targetContext) voidLoopingFlowContext.recordBreakTo(FlowContext targetContext) voidFlowContext.recordContinueFrom(FlowContext innerFlowContext, FlowInfo flowInfo) voidLoopingFlowContext.recordContinueFrom(FlowContext innerFlowContext, FlowInfo flowInfo) Constructors in org.aspectj.org.eclipse.jdt.internal.compiler.flow with parameters of type FlowContextModifierConstructorDescriptionExceptionHandlingFlowContext(FlowContext parent, ASTNode associatedNode, ReferenceBinding[] handledExceptions, FlowContext initializationParent, BlockScope scope, UnconditionalFlowInfo flowInfo) ExceptionHandlingFlowContext(FlowContext parent, TryStatement tryStatement, ReferenceBinding[] handledExceptions, int[] exceptionToCatchBlockMap, FlowContext initializationParent, BlockScope scope, FlowInfo flowInfo) ExceptionInferenceFlowContext(FlowContext parent, ASTNode associatedNode, ReferenceBinding[] handledExceptions, FlowContext initializationParent, BlockScope scope, UnconditionalFlowInfo flowInfo) FieldInitsFakingFlowContext(FlowContext parent, ASTNode associatedNode, ReferenceBinding[] handledExceptions, FlowContext initializationParent, BlockScope scope, UnconditionalFlowInfo flowInfo) FinallyFlowContext(FlowContext parent, ASTNode associatedNode, ExceptionHandlingFlowContext tryContext) FlowContext(FlowContext parent, ASTNode associatedNode, boolean inheritNullFieldChecks) InitializationFlowContext(FlowContext parent, ASTNode associatedNode, FlowInfo initsBeforeContext, FlowContext initializationParent, BlockScope scope) InsideSubRoutineFlowContext(FlowContext parent, ASTNode associatedNode) LabelFlowContext(FlowContext parent, ASTNode associatedNode, char[] labelName, BranchLabel breakLabel, BlockScope scope) LoopingFlowContext(FlowContext parent, FlowInfo upstreamNullFlowInfo, ASTNode associatedNode, BranchLabel breakLabel, BranchLabel continueLabel, Scope associatedScope, boolean isPreTest) SwitchFlowContext(FlowContext parent, ASTNode associatedNode, BranchLabel breakLabel, boolean isPreTest, boolean inheritNullFieldChecks) TryFlowContext(FlowContext parent, ASTNode associatedNode) -
Uses of FlowContext in org.aspectj.org.eclipse.jdt.internal.compiler.lookup
Methods in org.aspectj.org.eclipse.jdt.internal.compiler.lookup with parameters of type FlowContextModifier and TypeMethodDescriptionvoidBlockScope.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. -
Uses of FlowContext in org.aspectj.org.eclipse.jdt.internal.eval
Methods in org.aspectj.org.eclipse.jdt.internal.eval with parameters of type FlowContextModifier and TypeMethodDescriptionCodeSnippetReturnStatement.analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo)