Class CFAbstractTransfer<V extends CFAbstractValue<V>,S extends CFAbstractStore<V,S>,T extends CFAbstractTransfer<V,S,T>>     
- All Implemented Interfaces:
- ForwardTransferFunction<V,,- S> - TransferFunction<V,,- S> - NodeVisitor<TransferResult<V,- S>, - TransferInput<V, - S>> 
- Direct Known Subclasses:
- AccumulationTransfer,- CFTransfer,- InitializationTransfer,- KeyForTransfer,- LockTransfer
AnnotatedTypeFactory to provide checker-specific logic how to
 combine types (e.g., what is the type of a string concatenation, given the types of the two
 operands) and as an abstraction function (e.g., determine the annotations on literals).
 Design note: CFAbstractTransfer and its subclasses are supposed to act as transfer functions. But, since the AnnotatedTypeFactory already existed and performed checker-independent type propagation, CFAbstractTransfer delegates work to it instead of duplicating some logic in CFAbstractTransfer. The checker-specific subclasses of CFAbstractTransfer do implement transfer function logic themselves.
- 
Field SummaryFieldsModifier and TypeFieldDescriptionprotected final CFAbstractAnalysis<V,S, T> The analysis used by this transfer function.protected final booleanShould the analysis use sequential Java semantics (i.e., assume that only one thread is running at all times)?
- 
Constructor SummaryConstructorsModifierConstructorDescriptionprotectedCFAbstractTransfer(CFAbstractAnalysis<V, S, T> analysis) Create a CFAbstractTransfer.protectedCFAbstractTransfer(CFAbstractAnalysis<V, S, T> analysis, boolean forceConcurrentSemantics) Constructor that allows forcing concurrent semantics to be on for this instance of CFAbstractTransfer.
- 
Method SummaryModifier and TypeMethodDescriptionprotected voidaddInformationFromPreconditions(S initialStore, AnnotatedTypeFactory factory, UnderlyingAST.CFGMethod methodAst, MethodTree methodDeclTree, ExecutableElement methodElement) Add the information from all the preconditions of a method to the initial store in the method body.protected TransferResult<V,S> createTransferResult(@Nullable V value, TransferInput<V, S> in) Creates a TransferResult.finishValue(@Nullable V value, S store) A hook for subclasses to modify the result of the transfer function.finishValue(@Nullable V value, S thenStore, S elseStore) A hook for subclasses to modify the result of the transfer function.getNarrowedValue(TypeMirror type, @PolyNull V annotatedValue) Returns an abstract value with the giventypeand the annotations fromannotatedValue, adapted for narrowing.protected VgetValueFromFactory(Tree tree, Node node) Returns the abstract value of a non-leaf treetree, as computed by theAnnotatedTypeFactory.getWidenedValue(TypeMirror type, @PolyNull V annotatedValue) Returns an abstract value with the giventypeand the annotations fromannotatedValue, adapted for widening.initialStore(UnderlyingAST underlyingAST, List<LocalVariableNode> parameters) The initial store maps method formal parameters to their currently most refined type.protected static voidinsertIntoStores(TransferResult<CFValue, CFStore> result, JavaExpression target, AnnotationMirror newAnno) Inserts newAnno as the value into all stores (conditional or not) in the result for node.protected booleanisNotFullyInitializedReceiver(MethodTree methodDeclTree) Returns true if the receiver of a method or constructor might not yet be fully initialized.moreSpecificValue(V value1, V value2) Returns the abstract value of(value1, value2)that is more specific.protected voidprocessCommonAssignment(TransferInput<V, S> in, Node lhs, Node rhs, S store, V rhsValue) Determine abstract value of right-hand side and update the store accordingly.protected voidprocessConditionalPostconditions(MethodInvocationNode invocationNode, ExecutableElement methodElement, ExpressionTree invocationTree, S thenStore, S elseStore) Add information from the conditional postconditions of a method to the stores after an invocation.protected voidprocessPostconditions(Node invocationNode, S store, ExecutableElement executableElement, ExpressionTree invocationTree) Add information from the postconditions of a method to the store after an invocation.protected TransferResult<V,S> recreateTransferResult(@Nullable V value, TransferResult<V, S> in) Creates a TransferResult just like the given one, but with the given value.voidSet a fixed initial Store.splitAssignments(Node node) Takes a node, and either returns the node itself again (as a singleton list), or if the node is an assignment node, returns the lhs and rhs (where splitAssignments is applied recursively to the rhs -- that is, it is possible that the rhs does not appear in the result, but rather its lhs and rhs do).protected TransferResult<V,S> strengthenAnnotationOfEqualTo(TransferResult<V, S> res, Node firstNode, Node secondNode, V firstValue, V secondValue, boolean notEqualTo) Refine the annotation ofsecondNodeif the annotationsecondValueis less precise thanfirstValue.booleanReturns true if the transfer function uses sequential semantics, false if it uses concurrent semantics.visitAssignment(AssignmentNode n, TransferInput<V, S> in) visitCase(CaseNode n, TransferInput<V, S> in) A case produces no value, but it may imply some facts about switch selector expression.visitClassName(ClassNameNode n, TransferInput<V, S> in) Reverse the role of the 'thenStore' and 'elseStore'.visitEqualTo(EqualToNode n, TransferInput<V, S> p) visitExpressionStatement(ExpressionStatementNode n, TransferInput<V, S> vsTransferInput) Visits an expression that is used as a statement.visitInstanceOf(InstanceOfNode node, TransferInput<V, S> in) Use the most specific type information available according to the store.visitNode(Node n, TransferInput<V, S> in) The default visitor returns the input information unchanged, or in the case of conditional input information, merged.visitNotEqual(NotEqualNode n, TransferInput<V, S> p) visitReturn(ReturnNode n, TransferInput<V, S> p) visitSwitchExpressionNode(SwitchExpressionNode n, TransferInput<V, S> vsTransferInput) visitThis(ThisNode n, TransferInput<V, S> in) Methods inherited from class org.checkerframework.dataflow.cfg.node.AbstractNodeVisitorvisitArrayCreation, visitArrayType, visitAssertionError, visitBitwiseAnd, visitBitwiseComplement, visitBitwiseOr, visitBitwiseXor, visitBooleanLiteral, visitCharacterLiteral, visitClassDeclaration, visitConditionalAnd, visitConditionalOr, visitDoubleLiteral, visitExplicitThis, visitFloatingDivision, visitFloatingRemainder, visitFloatLiteral, visitGreaterThan, visitGreaterThanOrEqual, visitImplicitThis, visitIntegerDivision, visitIntegerLiteral, visitIntegerRemainder, visitLeftShift, visitLessThan, visitLessThanOrEqual, visitLongLiteral, visitMarker, visitMemberReference, visitMethodAccess, visitNullChk, visitNullLiteral, visitNumericalAddition, visitNumericalMinus, visitNumericalMultiplication, visitNumericalPlus, visitNumericalSubtraction, visitPackageName, visitParameterizedType, visitPrimitiveType, visitShortLiteral, visitSignedRightShift, visitStringConcatenate, visitStringLiteral, visitSuper, visitSynchronized, visitThrow, visitTypeCast, visitUnsignedRightShift, visitValueLiteralMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.checkerframework.dataflow.cfg.node.NodeVisitorvisitArrayCreation, visitArrayType, visitAssertionError, visitBitwiseAnd, visitBitwiseComplement, visitBitwiseOr, visitBitwiseXor, visitBooleanLiteral, visitCharacterLiteral, visitClassDeclaration, visitConditionalAnd, visitConditionalOr, visitDoubleLiteral, visitExplicitThis, visitFloatingDivision, visitFloatingRemainder, visitFloatLiteral, visitGreaterThan, visitGreaterThanOrEqual, visitImplicitThis, visitIntegerDivision, visitIntegerLiteral, visitIntegerRemainder, visitLeftShift, visitLessThan, visitLessThanOrEqual, visitLongLiteral, visitMarker, visitMemberReference, visitMethodAccess, visitNullChk, visitNullLiteral, visitNumericalAddition, visitNumericalMinus, visitNumericalMultiplication, visitNumericalPlus, visitNumericalSubtraction, visitPackageName, visitParameterizedType, visitPrimitiveType, visitShortLiteral, visitSignedRightShift, visitStringConcatenate, visitStringLiteral, visitSuper, visitSynchronized, visitThrow, visitTypeCast, visitUnsignedRightShift
- 
Field Details- 
analysisprotected final CFAbstractAnalysis<V extends CFAbstractValue<V>,S extends CFAbstractStore<V, analysisS>, T extends CFAbstractTransfer<V, S, T>> The analysis used by this transfer function.
- 
sequentialSemanticsprotected final boolean sequentialSemanticsShould the analysis use sequential Java semantics (i.e., assume that only one thread is running at all times)?
 
- 
- 
Constructor Details- 
CFAbstractTransferCreate a CFAbstractTransfer.- Parameters:
- analysis- the analysis used by this transfer function
 
- 
CFAbstractTransferConstructor that allows forcing concurrent semantics to be on for this instance of CFAbstractTransfer.- Parameters:
- analysis- the analysis used by this transfer function
- forceConcurrentSemantics- whether concurrent semantics should be forced to be on. If false, concurrent semantics are turned off by default, but the user can still turn them on via- -AconcurrentSemantics. If true, the user cannot turn off concurrent semantics.
 
 
- 
- 
Method Details- 
usesSequentialSemanticsReturns true if the transfer function uses sequential semantics, false if it uses concurrent semantics. Useful when creating an empty store, since a store makes different decisions depending on whether sequential or concurrent semantics are used.- Returns:
- true if the transfer function uses sequential semantics, false if it uses concurrent semantics
 
- 
finishValueA hook for subclasses to modify the result of the transfer function. This method is called before returning the abstract valuevalueas the result of the transfer function.If a subclass overrides this method, the subclass should also override finishValue(CFAbstractValue,CFAbstractStore,CFAbstractStore).- Parameters:
- value- a value to possibly modify
- store- the store
- Returns:
- the possibly-modified value
 
- 
finishValueA hook for subclasses to modify the result of the transfer function. This method is called before returning the abstract valuevalueas the result of the transfer function.If a subclass overrides this method, the subclass should also override finishValue(CFAbstractValue,CFAbstractStore).- Parameters:
- value- the value to finish
- thenStore- the "then" store
- elseStore- the "else" store
- Returns:
- the possibly-modified value
 
- 
getValueFromFactoryReturns the abstract value of a non-leaf treetree, as computed by theAnnotatedTypeFactory.- Returns:
- the abstract value of a non-leaf tree tree, as computed by theAnnotatedTypeFactory
 
- 
setFixedInitialStoreSet a fixed initial Store.
- 
initialStoreThe initial store maps method formal parameters to their currently most refined type.- Specified by:
- initialStorein interface- ForwardTransferFunction<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Parameters:
- underlyingAST- an abstract syntax tree
- parameters- a list of local variable nodes representing formal parameters (if any)
- Returns:
- the initial store
 
- 
isNotFullyInitializedReceiverReturns true if the receiver of a method or constructor might not yet be fully initialized.- Parameters:
- methodDeclTree- the declaration of the method or constructor
- Returns:
- true if the receiver of a method or constructor might not yet be fully initialized
 
- 
addInformationFromPreconditionsprotected void addInformationFromPreconditions(S initialStore, AnnotatedTypeFactory factory, UnderlyingAST.CFGMethod methodAst, MethodTree methodDeclTree, ExecutableElement methodElement) Add the information from all the preconditions of a method to the initial store in the method body.- Parameters:
- initialStore- the initial store for the method body
- factory- the type factory
- methodAst- the AST for a method declaration
- methodDeclTree- the declaration of the method; is a field of- methodAst
- methodElement- the element for the method
 
- 
visitNodeThe default visitor returns the input information unchanged, or in the case of conditional input information, merged.- Specified by:
- visitNodein class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
createTransferResult@SideEffectFree protected TransferResult<V,S> createTransferResult(@Nullable V value, TransferInput<V, S> in) Creates a TransferResult.This default implementation returns the input information unchanged, or in the case of conditional input information, merged. - Parameters:
- value- the value; possibly null
- in- the transfer input
- Returns:
- the input information, as a TransferResult
 
- 
recreateTransferResult@SideEffectFree protected TransferResult<V,S> recreateTransferResult(@Nullable V value, TransferResult<V, S> in) Creates a TransferResult just like the given one, but with the given value.This default implementation returns the input information unchanged, or in the case of conditional input information, merged. - Parameters:
- value- the value; possibly null
- in- the TransferResult to copy
- Returns:
- the input informatio
 
- 
visitClassName- Specified by:
- visitClassNamein interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitClassNamein class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
visitFieldAccess- Specified by:
- visitFieldAccessin interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitFieldAccessin class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
visitArrayAccess- Specified by:
- visitArrayAccessin interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitArrayAccessin class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
visitLocalVariableUse the most specific type information available according to the store.- Specified by:
- visitLocalVariablein interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitLocalVariablein class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
visitThis- Overrides:
- visitThisin class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
visitTernaryExpression- Specified by:
- visitTernaryExpressionin interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitTernaryExpressionin class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
visitSwitchExpressionNodepublic TransferResult<V,S> visitSwitchExpressionNode(SwitchExpressionNode n, TransferInput<V, S> vsTransferInput) - Specified by:
- visitSwitchExpressionNodein interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitSwitchExpressionNodein class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
visitConditionalNotReverse the role of the 'thenStore' and 'elseStore'.- Specified by:
- visitConditionalNotin interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitConditionalNotin class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
visitEqualTo- Specified by:
- visitEqualToin interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitEqualToin class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
visitNotEqual- Specified by:
- visitNotEqualin interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitNotEqualin class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
strengthenAnnotationOfEqualToprotected TransferResult<V,S> strengthenAnnotationOfEqualTo(TransferResult<V, S> res, Node firstNode, Node secondNode, V firstValue, V secondValue, boolean notEqualTo) Refine the annotation ofsecondNodeif the annotationsecondValueis less precise thanfirstValue. This is possible, ifsecondNodeis an expression that is tracked by the store (e.g., a local variable or a field). Clients usually call this twice withfirstNodeandsecondNodereversed, to refine each of them.Note that when overriding this method, when a new type is inserted into the store, splitAssignments(org.checkerframework.dataflow.cfg.node.Node)should be called, and the new type should be inserted into the store for each of the resulting nodes.- Parameters:
- firstNode- the node that might be more precise
- secondNode- the node whose type to possibly refine
- firstValue- the abstract value that might be more precise
- secondValue- the abstract value that might be less precise
- res- the previous result
- notEqualTo- if true, indicates that the logic is flipped (i.e., the information is added to the- elseStoreinstead of the- thenStore) for a not-equal comparison.
- Returns:
- the conditional transfer result (if information has been added), or res
 
- 
splitAssignmentsTakes a node, and either returns the node itself again (as a singleton list), or if the node is an assignment node, returns the lhs and rhs (where splitAssignments is applied recursively to the rhs -- that is, it is possible that the rhs does not appear in the result, but rather its lhs and rhs do).- Parameters:
- node- possibly an assignment node
- Returns:
- a list containing all the right- and left-hand sides in the given assignment node; it contains just the node itself if it is not an assignment)
 
- 
visitAssignment- Specified by:
- visitAssignmentin interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitAssignmentin class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
visitReturn- Specified by:
- visitReturnin interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitReturnin class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
visitLambdaResultExpressionpublic TransferResult<V,S> visitLambdaResultExpression(LambdaResultExpressionNode n, TransferInput<V, S> in) - Specified by:
- visitLambdaResultExpressionin interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitLambdaResultExpressionin class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
processCommonAssignmentprotected void processCommonAssignment(TransferInput<V, S> in, Node lhs, Node rhs, S store, V rhsValue) Determine abstract value of right-hand side and update the store accordingly.- Parameters:
- in- the store(s) before the assignment
- lhs- the left-hand side of the assignment
- rhs- the right-hand side of the assignment
- store- the regular input store (from- in)
- rhsValue- the value of the right-hand side of the assignment
 
- 
visitObjectCreation- Specified by:
- visitObjectCreationin interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitObjectCreationin class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
visitMethodInvocation- Specified by:
- visitMethodInvocationin interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitMethodInvocationin class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
visitInstanceOf- Specified by:
- visitInstanceOfin interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitInstanceOfin class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
processPostconditionsprotected void processPostconditions(Node invocationNode, S store, ExecutableElement executableElement, ExpressionTree invocationTree) Add information from the postconditions of a method to the store after an invocation.- Parameters:
- invocationNode- a method call or an object creation
- store- a store; is side-effected by this method
- executableElement- the method or constructor being called
- invocationTree- the tree for the method call or the object creation
 
- 
processConditionalPostconditionsprotected void processConditionalPostconditions(MethodInvocationNode invocationNode, ExecutableElement methodElement, ExpressionTree invocationTree, S thenStore, S elseStore) Add information from the conditional postconditions of a method to the stores after an invocation.- Parameters:
- invocationNode- a method call
- methodElement- the method being called
- invocationTree- the tree for the method call
- thenStore- the "then" store; is side-effected by this method
- elseStore- the "else" store; is side-effected by this method
 
- 
visitCaseA case produces no value, but it may imply some facts about switch selector expression.- Specified by:
- visitCasein interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitCasein class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
moreSpecificValueReturns the abstract value of(value1, value2)that is more specific. If the two are incomparable, thenvalue1is returned.- Parameters:
- value1- an abstract value
- value2- another abstract value
- Returns:
- the more specific value of the two parameters, or, if they are incomparable, value1
 
- 
visitVariableDeclarationpublic TransferResult<V,S> visitVariableDeclaration(VariableDeclarationNode n, TransferInput<V, S> p) - Specified by:
- visitVariableDeclarationin interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitVariableDeclarationin class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
visitWideningConversion- Specified by:
- visitWideningConversionin interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitWideningConversionin class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
getNarrowedValueReturns an abstract value with the giventypeand the annotations fromannotatedValue, adapted for narrowing. This is only called at a narrowing conversion.- Parameters:
- type- the type to narrow to
- annotatedValue- the type to narrow from
- Returns:
- an abstract value with the given typeand the annotations fromannotatedValue; returns null ifannotatedValueis null
 
- 
getWidenedValueReturns an abstract value with the giventypeand the annotations fromannotatedValue, adapted for widening. This is only called at a widening conversion.- Parameters:
- type- the type to widen to
- annotatedValue- the type to widen from
- Returns:
- an abstract value with the given typeand the annotations fromannotatedValue; returns null ifannotatedValueis null
 
- 
visitNarrowingConversionpublic TransferResult<V,S> visitNarrowingConversion(NarrowingConversionNode n, TransferInput<V, S> p) - Specified by:
- visitNarrowingConversionin interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitNarrowingConversionin class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
visitStringConversion- Specified by:
- visitStringConversionin interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitStringConversionin class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
 
- 
visitExpressionStatementpublic TransferResult<V,S> visitExpressionStatement(ExpressionStatementNode n, TransferInput<V, S> vsTransferInput) Description copied from interface:NodeVisitorVisits an expression that is used as a statement. This node is a marker after the expression node(s).- Specified by:
- visitExpressionStatementin interface- NodeVisitor<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>> 
- Overrides:
- visitExpressionStatementin class- AbstractNodeVisitor<TransferResult<V extends CFAbstractValue<V>,- S extends CFAbstractStore<V, - S>>, - TransferInput<V extends CFAbstractValue<V>, - S extends CFAbstractStore<V, - S>>> 
- Parameters:
- n- the- ExpressionStatementNodeto be visited
- vsTransferInput- the argument for the operation implemented by this visitor
- Returns:
- the return value of the operation implemented by this visitor
 
- 
insertIntoStoresprotected static void insertIntoStores(TransferResult<CFValue, CFStore> result, JavaExpression target, AnnotationMirror newAnno) Inserts newAnno as the value into all stores (conditional or not) in the result for node. This is a utility method for subclasses.- Parameters:
- result- the TransferResult holding the stores to modify
- target- the receiver whose value should be modified
- newAnno- the new value
 
 
-