blob: 10f03980c1859815268cd38ff5c1d1d93ea69897 [file] [log] [blame]
package org.checkerframework.framework.testchecker.supportedquals;
import java.lang.annotation.Annotation;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import org.checkerframework.common.basetype.BaseAnnotatedTypeFactory;
import org.checkerframework.common.basetype.BaseTypeChecker;
import org.checkerframework.common.basetype.BaseTypeVisitor;
import org.checkerframework.framework.testchecker.supportedquals.qual.BottomQualifier;
import org.checkerframework.framework.testchecker.supportedquals.qual.Qualifier;
/**
* Tests that annotations that have @Target(TYPE_USE, OTHER) (where OTHER is not TYPE_PARAMETER) may
* be in the qual package so long as {@link BaseAnnotatedTypeFactory#createSupportedTypeQualifiers}
* is overridden.
*/
public class SupportedQualsChecker extends BaseTypeChecker {
@Override
protected BaseTypeVisitor<?> createSourceVisitor() {
return new BaseTypeVisitor<SupportedQualsAnnotatedTypeFactory>(this) {
@Override
protected SupportedQualsAnnotatedTypeFactory createTypeFactory() {
return new SupportedQualsAnnotatedTypeFactory(checker);
}
};
}
class SupportedQualsAnnotatedTypeFactory extends BaseAnnotatedTypeFactory {
public SupportedQualsAnnotatedTypeFactory(BaseTypeChecker checker) {
super(checker);
postInit();
}
@Override
protected Set<Class<? extends Annotation>> createSupportedTypeQualifiers() {
return new HashSet<Class<? extends Annotation>>(
Arrays.asList(Qualifier.class, BottomQualifier.class));
}
}
}