public class MustCallTransfer extends CFTransfer
Modifier and Type | Field and Description |
---|---|
protected static AtomicLong |
uid
A unique identifier counter for node names.
|
analysis, sequentialSemantics
Constructor and Description |
---|
MustCallTransfer(CFAnalysis analysis)
Create a MustCallTransfer.
|
addInformationFromPreconditions, createTransferResult, finishValue, finishValue, getNarrowedValue, getValueFromFactory, getWidenedValue, initialStore, insertIntoStores, isNotFullyInitializedReceiver, moreSpecificValue, processCommonAssignment, processConditionalPostconditions, processPostconditions, recreateTransferResult, setFixedInitialStore, splitAssignments, strengthenAnnotationOfEqualTo, usesSequentialSemantics, visitArrayAccess, visitCase, visitClassName, visitConditionalNot, visitEqualTo, visitFieldAccess, visitInstanceOf, visitLambdaResultExpression, visitLocalVariable, visitNarrowingConversion, visitNode, visitNotEqual, visitReturn, visitStringConcatenateAssignment, visitThis, visitVariableDeclaration, visitWideningConversion
visitArrayCreation, 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, visitValueLiteral
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
visitArrayCreation, 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
protected static AtomicLong uid
public MustCallTransfer(CFAnalysis analysis)
analysis
- the analysispublic TransferResult<CFValue,CFStore> visitStringConversion(StringConversionNode n, TransferInput<CFValue,CFStore> p)
visitStringConversion
in interface NodeVisitor<TransferResult<CFValue,CFStore>,TransferInput<CFValue,CFStore>>
visitStringConversion
in class CFAbstractTransfer<CFValue,CFStore,CFTransfer>
public TransferResult<CFValue,CFStore> visitAssignment(AssignmentNode n, TransferInput<CFValue,CFStore> in)
visitAssignment
in interface NodeVisitor<TransferResult<CFValue,CFStore>,TransferInput<CFValue,CFStore>>
visitAssignment
in class CFAbstractTransfer<CFValue,CFStore,CFTransfer>
public TransferResult<CFValue,CFStore> visitMethodInvocation(MethodInvocationNode n, TransferInput<CFValue,CFStore> in)
visitMethodInvocation
in interface NodeVisitor<TransferResult<CFValue,CFStore>,TransferInput<CFValue,CFStore>>
visitMethodInvocation
in class CFAbstractTransfer<CFValue,CFStore,CFTransfer>
public TransferResult<CFValue,CFStore> visitObjectCreation(ObjectCreationNode node, TransferInput<CFValue,CFStore> input)
visitObjectCreation
in interface NodeVisitor<TransferResult<CFValue,CFStore>,TransferInput<CFValue,CFStore>>
visitObjectCreation
in class CFAbstractTransfer<CFValue,CFStore,CFTransfer>
public TransferResult<CFValue,CFStore> visitTernaryExpression(TernaryExpressionNode node, TransferInput<CFValue,CFStore> input)
visitTernaryExpression
in interface NodeVisitor<TransferResult<CFValue,CFStore>,TransferInput<CFValue,CFStore>>
visitTernaryExpression
in class CFAbstractTransfer<CFValue,CFStore,CFTransfer>
public TransferResult<CFValue,CFStore> visitSwitchExpressionNode(SwitchExpressionNode node, TransferInput<CFValue,CFStore> input)
visitSwitchExpressionNode
in interface NodeVisitor<TransferResult<CFValue,CFStore>,TransferInput<CFValue,CFStore>>
visitSwitchExpressionNode
in class CFAbstractTransfer<CFValue,CFStore,CFTransfer>
public void updateStoreWithTempVar(TransferResult<CFValue,CFStore> result, Node node)
node
.node
- the node to be assigned to a temporary variableresult
- the transfer result containing the store to be modifiedprotected @Nullable VariableTree createTemporaryVar(Node node)
node
- an expression nodeprotected String uniqueName(String prefix)
Note that the correctness of the Resource Leak Checker depends on these names actually being
unique, because LocalVariableNode
s derived from them are used as keys in a map.
prefix
- the prefix for the name