Class ReportVisitor
- java.lang.Object
-
- com.sun.source.util.TreeScanner<R,P>
-
- com.sun.source.util.TreePathScanner<R,P>
-
- org.checkerframework.framework.source.SourceVisitor<java.lang.Void,java.lang.Void>
-
- org.checkerframework.common.basetype.BaseTypeVisitor<BaseAnnotatedTypeFactory>
-
- org.checkerframework.common.util.report.ReportVisitor
-
- All Implemented Interfaces:
com.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>
public class ReportVisitor extends BaseTypeVisitor<BaseAnnotatedTypeFactory>
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
ReportVisitor.ReportTypeValidator
-
Nested classes/interfaces inherited from class org.checkerframework.common.basetype.BaseTypeVisitor
BaseTypeVisitor.FoundRequired, BaseTypeVisitor.OverrideChecker
-
-
Field Summary
-
Fields inherited from class org.checkerframework.common.basetype.BaseTypeVisitor
atypeFactory, checker, DETERMINISTIC, ignoreTargetLocations, IMPURE, methodTree, positions, PURE, qualAllowedLocations, qualHierarchy, showchecks, SIDE_EFFECT_FREE, TARGET, targetValueElement, typeHierarchy, typeValidator, unusedWhenElement
-
Fields inherited from class org.checkerframework.framework.source.SourceVisitor
elements, root, trees, treesWithSuppressWarnings, types
-
-
Constructor Summary
Constructors Constructor Description ReportVisitor(BaseTypeChecker checker)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected BaseTypeValidator
createTypeValidator()
void
processClassTree(com.sun.source.tree.ClassTree tree)
Type-check classTree.java.lang.Void
scan(com.sun.source.tree.Tree tree, java.lang.Void p)
java.lang.Void
visitArrayAccess(com.sun.source.tree.ArrayAccessTree tree, java.lang.Void p)
java.lang.Void
visitAssignment(com.sun.source.tree.AssignmentTree tree, java.lang.Void p)
Performs two checks: subtyping and assignability checks, usingBaseTypeVisitor.commonAssignmentCheck(Tree, ExpressionTree, String, Object[])
.java.lang.Void
visitIdentifier(com.sun.source.tree.IdentifierTree tree, java.lang.Void p)
java.lang.Void
visitInstanceOf(com.sun.source.tree.InstanceOfTree tree, java.lang.Void p)
java.lang.Void
visitMemberSelect(com.sun.source.tree.MemberSelectTree tree, java.lang.Void p)
java.lang.Void
visitMethod(com.sun.source.tree.MethodTree tree, java.lang.Void p)
Checks that the method obeys override and subtype rules to all overridden methods.java.lang.Void
visitMethodInvocation(com.sun.source.tree.MethodInvocationTree tree, java.lang.Void p)
Performs a method invocation check.java.lang.Void
visitModifiers(com.sun.source.tree.ModifiersTree tree, java.lang.Void p)
java.lang.Void
visitNewArray(com.sun.source.tree.NewArrayTree tree, java.lang.Void p)
java.lang.Void
visitNewClass(com.sun.source.tree.NewClassTree tree, java.lang.Void p)
Performs a new class invocation check.java.lang.Void
visitTypeCast(com.sun.source.tree.TypeCastTree tree, java.lang.Void p)
-
Methods inherited from class org.checkerframework.common.basetype.BaseTypeVisitor
checkAccess, checkAccessAllowed, checkArguments, checkArrayInitialization, checkConditionalPostcondition, checkConstructorInvocation, checkConstructorResult, checkContract, checkDefaultConstructor, checkEnclosingExpr, checkExceptionParameter, checkExplicitAnnotationsOnIntersectionBounds, checkExtendsAndImplements, checkExtendsOrImplements, checkFieldInvariantDeclarations, checkForPolymorphicQualifiers, checkForPolymorphicQualifiers, checkMethodInvocability, checkMethodReferenceAsOverride, checkOverride, checkOverride, checkPostcondition, checkPreconditions, checkPurity, checkQualifierParameter, checkSuperConstructorCall, checkThisConstructorCall, checkThisOrSuperConstructorCall, checkThrownExpression, checkTypeArguments, checkTypecastRedundancy, checkTypecastSafety, checkVarargs, commonAssignmentCheck, commonAssignmentCheck, commonAssignmentCheck, commonAssignmentCheckEndDiagnostic, commonAssignmentCheckEndDiagnostic, commonAssignmentCheckStartDiagnostic, createOverrideChecker, createQualAllowedLocations, createTypeFactory, createTypeFactoryPublic, enclosingMemberSelect, enclosingStatement, getExceptionParameterLowerBoundAnnotations, getThrowUpperBoundAnnotations, getTypeFactory, isTypeCastSafe, isValidUse, isValidUse, isValidUse, reportCommonAssignmentError, reportMethodInvocabilityError, reportPurityErrors, setRoot, shouldSkipUses, shouldWarnAboutIrrelevantJavaTypes, skipReceiverSubtypeCheck, testAnnotationInsertion, testJointJavacJavaParserVisitor, testTypevarContainment, typeCheckVectorCopyIntoArgument, validateTargetLocation, validateType, validateTypeOf, validateVariablesTargetLocation, visitAnnotatedType, visitAnnotatedType, visitAnnotation, visitCatch, visitClass, visitCompilationUnit, visitCompoundAssignment, visitConditionalExpression, visitEnhancedForLoop, visitLambdaExpression, visitMemberReference, visitReturn, visitSwitchExpression17, visitThrow, visitTypeParameter, visitUnary, visitVariable, warnAboutIrrelevantJavaTypes, warnRedundantAnnotations
-
Methods inherited from class org.checkerframework.framework.source.SourceVisitor
visit
-
Methods inherited from class com.sun.source.util.TreeScanner
reduce, scan, visitArrayType, visitAssert, visitBinary, visitBlock, visitBreak, visitCase, visitContinue, visitDoWhileLoop, visitEmptyStatement, visitErroneous, visitExports, visitExpressionStatement, visitForLoop, visitIf, visitImport, visitIntersectionType, visitLabeledStatement, visitLiteral, visitModule, visitOpens, visitOther, visitPackage, visitParameterizedType, visitParenthesized, visitPrimitiveType, visitProvides, visitRequires, visitSwitch, visitSynchronized, visitTry, visitUnionType, visitUses, visitWhileLoop, visitWildcard
-
-
-
-
Constructor Detail
-
ReportVisitor
public ReportVisitor(BaseTypeChecker checker)
-
-
Method Detail
-
scan
public java.lang.Void scan(com.sun.source.tree.Tree tree, java.lang.Void p)
- Overrides:
scan
in classBaseTypeVisitor<BaseAnnotatedTypeFactory>
-
processClassTree
public void processClassTree(com.sun.source.tree.ClassTree tree)
Description copied from class:BaseTypeVisitor
Type-check classTree. Subclasses should override this method instead ofBaseTypeVisitor.visitClass(ClassTree, Void)
.- Overrides:
processClassTree
in classBaseTypeVisitor<BaseAnnotatedTypeFactory>
- Parameters:
tree
- class to check
-
visitMethod
public java.lang.Void visitMethod(com.sun.source.tree.MethodTree tree, java.lang.Void p)
Description copied from class:BaseTypeVisitor
Checks that the method obeys override and subtype rules to all overridden methods. (Uses the pseudo-assignment logic to do so.)The override rule specifies that a method, m1, may override a method m2 only if:
- m1 return type is a subtype of m2
- m1 receiver type is a supertype of m2
- m1 parameters are supertypes of corresponding m2 parameters
- Specified by:
visitMethod
in interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitMethod
in classBaseTypeVisitor<BaseAnnotatedTypeFactory>
-
visitMethodInvocation
public java.lang.Void visitMethodInvocation(com.sun.source.tree.MethodInvocationTree tree, java.lang.Void p)
Description copied from class:BaseTypeVisitor
Performs a method invocation check.An invocation of a method, m, on the receiver, r is valid only if:
- passed arguments are subtypes of corresponding m parameters
- r is a subtype of m receiver type
- if m is generic, passed type arguments are subtypes of m type variables
- Specified by:
visitMethodInvocation
in interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitMethodInvocation
in classBaseTypeVisitor<BaseAnnotatedTypeFactory>
-
visitMemberSelect
public java.lang.Void visitMemberSelect(com.sun.source.tree.MemberSelectTree tree, java.lang.Void p)
- Specified by:
visitMemberSelect
in interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitMemberSelect
in classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitIdentifier
public java.lang.Void visitIdentifier(com.sun.source.tree.IdentifierTree tree, java.lang.Void p)
- Specified by:
visitIdentifier
in interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitIdentifier
in classBaseTypeVisitor<BaseAnnotatedTypeFactory>
-
visitAssignment
public java.lang.Void visitAssignment(com.sun.source.tree.AssignmentTree tree, java.lang.Void p)
Description copied from class:BaseTypeVisitor
Performs two checks: subtyping and assignability checks, usingBaseTypeVisitor.commonAssignmentCheck(Tree, ExpressionTree, String, Object[])
.If the subtype check fails, it issues an "assignment.type.incompatible" error.
- Specified by:
visitAssignment
in interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitAssignment
in classBaseTypeVisitor<BaseAnnotatedTypeFactory>
-
visitArrayAccess
public java.lang.Void visitArrayAccess(com.sun.source.tree.ArrayAccessTree tree, java.lang.Void p)
- Specified by:
visitArrayAccess
in interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitArrayAccess
in classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
visitNewClass
public java.lang.Void visitNewClass(com.sun.source.tree.NewClassTree tree, java.lang.Void p)
Description copied from class:BaseTypeVisitor
Performs a new class invocation check.An invocation of a constructor, c, is valid only if:
- passed arguments are subtypes of corresponding c parameters
- if c is generic, passed type arguments are subtypes of c type variables
- Specified by:
visitNewClass
in interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitNewClass
in classBaseTypeVisitor<BaseAnnotatedTypeFactory>
-
visitNewArray
public java.lang.Void visitNewArray(com.sun.source.tree.NewArrayTree tree, java.lang.Void p)
- Specified by:
visitNewArray
in interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitNewArray
in classBaseTypeVisitor<BaseAnnotatedTypeFactory>
-
visitTypeCast
public java.lang.Void visitTypeCast(com.sun.source.tree.TypeCastTree tree, java.lang.Void p)
- Specified by:
visitTypeCast
in interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitTypeCast
in classBaseTypeVisitor<BaseAnnotatedTypeFactory>
-
visitInstanceOf
public java.lang.Void visitInstanceOf(com.sun.source.tree.InstanceOfTree tree, java.lang.Void p)
- Specified by:
visitInstanceOf
in interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitInstanceOf
in classBaseTypeVisitor<BaseAnnotatedTypeFactory>
-
visitModifiers
public java.lang.Void visitModifiers(com.sun.source.tree.ModifiersTree tree, java.lang.Void p)
- Specified by:
visitModifiers
in interfacecom.sun.source.tree.TreeVisitor<java.lang.Void,java.lang.Void>
- Overrides:
visitModifiers
in classcom.sun.source.util.TreeScanner<java.lang.Void,java.lang.Void>
-
createTypeValidator
protected BaseTypeValidator createTypeValidator()
- Overrides:
createTypeValidator
in classBaseTypeVisitor<BaseAnnotatedTypeFactory>
-
-