public class InitializationVisitor<Factory extends InitializationAnnotatedTypeFactory<Value,Store,?,?>,Value extends org.checkerframework.framework.flow.CFAbstractValue<Value>,Store extends InitializationStore<Value,Store>>
extends org.checkerframework.common.basetype.BaseTypeVisitor<Factory>
NullnessChecker
. Also
supports rawness as a type-system for tracking initialization, though FBC is preferred.Modifier and Type | Field and Description |
---|---|
protected org.checkerframework.framework.util.AnnotationFormatter |
annoFormatter |
protected java.util.List<VariableTree> |
initializedFields |
Constructor and Description |
---|
InitializationVisitor(org.checkerframework.common.basetype.BaseTypeChecker checker) |
Modifier and Type | Method and Description |
---|---|
protected boolean |
checkConstructorInvocation(org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedDeclaredType dt,
org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedExecutableType constructor,
NewClassTree src) |
protected boolean |
checkContract(org.checkerframework.dataflow.analysis.FlowExpressions.Receiver expr,
javax.lang.model.element.AnnotationMirror necessaryAnnotation,
javax.lang.model.element.AnnotationMirror inferredAnnotation,
org.checkerframework.framework.flow.CFAbstractStore<?,?> store) |
protected void |
checkFieldsInitialized(Tree blockNode,
boolean staticFields,
Store store,
java.util.List<? extends javax.lang.model.element.AnnotationMirror> receiverAnnotations)
Checks that all fields (all static fields if
staticFields is true) are initialized in
the given store. |
protected void |
commonAssignmentCheck(Tree varTree,
ExpressionTree valueExp,
@CompilerMessageKey java.lang.String errorKey) |
void |
processClassTree(ClassTree node) |
void |
setRoot(CompilationUnitTree root) |
java.lang.Void |
visitMethod(MethodTree node,
java.lang.Void p) |
java.lang.Void |
visitTypeCast(TypeCastTree node,
java.lang.Void p) |
java.lang.Void |
visitVariable(VariableTree node,
java.lang.Void p) |
checkAccess, checkArguments, checkArrayInitialization, checkAssignability, checkConditionalPostcondition, checkDefaultConstructor, checkExceptionParameter, checkFieldInvariantDeclarations, checkForAnnotatedJdk, checkMethodInvocability, checkMethodReferenceAsOverride, checkOverride, checkOverride, checkPostcondition, checkPreconditions, checkThrownExpression, checkTypeArguments, checkTypecastRedundancy, checkTypecastSafety, checkVarargs, commonAssignmentCheck, commonAssignmentCheck, createOverrideChecker, createTypeFactory, createTypeValidator, enclosingMemberSelect, enclosingStatement, getExceptionParameterLowerBoundAnnotations, getThrowUpperBoundAnnotations, getTypeFactory, isAccessAllowed, isAssignable, isValidUse, isValidUse, isValidUse, isVectorCopyInto, reportPurityErrors, scan, shouldSkipUses, skipReceiverSubtypeCheck, testTypevarContainment, typeCheckVectorCopyIntoArgument, validateType, validateTypeOf, visitAnnotation, visitArrayAccess, visitAssignment, visitCatch, visitClass, visitCompilationUnit, visitCompoundAssignment, visitConditionalExpression, visitEnhancedForLoop, visitIdentifier, visitInstanceOf, visitLambdaExpression, visitMemberReference, visitMethodInvocation, visitNewArray, visitNewClass, visitParameterizedType, visitReturn, visitThrow, visitTypeParameter, visitUnary
getCurrentPath, scan
reduce, scan, visitAnnotatedType, visitArrayType, visitAssert, visitBinary, visitBlock, visitBreak, visitCase, visitContinue, visitDoWhileLoop, visitEmptyStatement, visitErroneous, visitExpressionStatement, visitForLoop, visitIf, visitImport, visitIntersectionType, visitLabeledStatement, visitLiteral, visitMemberSelect, visitModifiers, visitOther, visitParenthesized, visitPrimitiveType, visitSwitch, visitSynchronized, visitTry, visitUnionType, visitWhileLoop, visitWildcard
protected final org.checkerframework.framework.util.AnnotationFormatter annoFormatter
protected final java.util.List<VariableTree> initializedFields
public InitializationVisitor(org.checkerframework.common.basetype.BaseTypeChecker checker)
public void setRoot(CompilationUnitTree root)
setRoot
in class org.checkerframework.common.basetype.BaseTypeVisitor<Factory extends InitializationAnnotatedTypeFactory<Value,Store,?,?>>
protected boolean checkConstructorInvocation(org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedDeclaredType dt, org.checkerframework.framework.type.AnnotatedTypeMirror.AnnotatedExecutableType constructor, NewClassTree src)
checkConstructorInvocation
in class org.checkerframework.common.basetype.BaseTypeVisitor<Factory extends InitializationAnnotatedTypeFactory<Value,Store,?,?>>
protected void commonAssignmentCheck(Tree varTree, ExpressionTree valueExp, @CompilerMessageKey java.lang.String errorKey)
commonAssignmentCheck
in class org.checkerframework.common.basetype.BaseTypeVisitor<Factory extends InitializationAnnotatedTypeFactory<Value,Store,?,?>>
public java.lang.Void visitVariable(VariableTree node, java.lang.Void p)
visitVariable
in interface TreeVisitor<java.lang.Void,java.lang.Void>
visitVariable
in class org.checkerframework.common.basetype.BaseTypeVisitor<Factory extends InitializationAnnotatedTypeFactory<Value,Store,?,?>>
protected boolean checkContract(org.checkerframework.dataflow.analysis.FlowExpressions.Receiver expr, javax.lang.model.element.AnnotationMirror necessaryAnnotation, javax.lang.model.element.AnnotationMirror inferredAnnotation, org.checkerframework.framework.flow.CFAbstractStore<?,?> store)
checkContract
in class org.checkerframework.common.basetype.BaseTypeVisitor<Factory extends InitializationAnnotatedTypeFactory<Value,Store,?,?>>
public java.lang.Void visitTypeCast(TypeCastTree node, java.lang.Void p)
visitTypeCast
in interface TreeVisitor<java.lang.Void,java.lang.Void>
visitTypeCast
in class org.checkerframework.common.basetype.BaseTypeVisitor<Factory extends InitializationAnnotatedTypeFactory<Value,Store,?,?>>
public void processClassTree(ClassTree node)
processClassTree
in class org.checkerframework.common.basetype.BaseTypeVisitor<Factory extends InitializationAnnotatedTypeFactory<Value,Store,?,?>>
public java.lang.Void visitMethod(MethodTree node, java.lang.Void p)
visitMethod
in interface TreeVisitor<java.lang.Void,java.lang.Void>
visitMethod
in class org.checkerframework.common.basetype.BaseTypeVisitor<Factory extends InitializationAnnotatedTypeFactory<Value,Store,?,?>>
protected void checkFieldsInitialized(Tree blockNode, boolean staticFields, Store store, java.util.List<? extends javax.lang.model.element.AnnotationMirror> receiverAnnotations)
staticFields
is true) are initialized in
the given store.