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, visitUnarygetCurrentPath, scanreduce, 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, visitWildcardprotected 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.