package testlib.wholeprograminference; import com.sun.source.tree.AnnotationTree; import com.sun.tools.javac.tree.JCTree; import com.sun.tools.javac.tree.TreeInfo; import javax.lang.model.element.Element; import org.checkerframework.common.basetype.BaseTypeChecker; import org.checkerframework.common.basetype.BaseTypeVisitor; import org.checkerframework.framework.source.Result; import testlib.wholeprograminference.qual.DefaultType; /** * Visitor for a simple type system to test whole-program inference using .jaif files. * * @author pbsf */ public class WholeProgramInferenceTestVisitor extends BaseTypeVisitor<WholeProgramInferenceTestAnnotatedTypeFactory> { public WholeProgramInferenceTestVisitor(BaseTypeChecker checker) { super(checker); } @Override protected WholeProgramInferenceTestAnnotatedTypeFactory createTypeFactory() { return new WholeProgramInferenceTestAnnotatedTypeFactory(checker); } @Override public Void visitAnnotation(AnnotationTree node, Void p) { Element anno = TreeInfo.symbol((JCTree) node.getAnnotationType()); if (anno.toString().equals(DefaultType.class.getName())) { checker.report(Result.failure("annotation.not.allowed.in.src", anno.toString()), node); } return super.visitAnnotation(node, p); } }