blob: 0748d4ccfde2cf2832bd48ac7dbe4d3b5fa4dba5 [file] [log] [blame]
package org.checkerframework.framework.testchecker.reflection;
import javax.lang.model.element.AnnotationMirror;
import org.checkerframework.common.basetype.BaseAnnotatedTypeFactory;
import org.checkerframework.common.basetype.BaseTypeChecker;
import org.checkerframework.framework.qual.LiteralKind;
import org.checkerframework.framework.testchecker.reflection.qual.ReflectBottom;
import org.checkerframework.framework.type.treeannotator.ListTreeAnnotator;
import org.checkerframework.framework.type.treeannotator.LiteralTreeAnnotator;
import org.checkerframework.framework.type.treeannotator.PropagationTreeAnnotator;
import org.checkerframework.framework.type.treeannotator.TreeAnnotator;
import org.checkerframework.javacutil.AnnotationBuilder;
/**
* AnnotatedTypeFactory with reflection resolution enabled. The used qualifier hierarchy is
* straightforward and only intended for test purposes.
*/
public final class ReflectionTestAnnotatedTypeFactory extends BaseAnnotatedTypeFactory {
public ReflectionTestAnnotatedTypeFactory(BaseTypeChecker checker) {
super(checker);
postInit();
}
@Override
public TreeAnnotator createTreeAnnotator() {
LiteralTreeAnnotator literalTreeAnnotator = new LiteralTreeAnnotator(this);
AnnotationMirror bottom = AnnotationBuilder.fromClass(elements, ReflectBottom.class);
literalTreeAnnotator.addLiteralKind(LiteralKind.INT, bottom);
literalTreeAnnotator.addStandardLiteralQualifiers();
return new ListTreeAnnotator(new PropagationTreeAnnotator(this), literalTreeAnnotator);
}
}