package org.checkerframework.common.value; import java.util.LinkedHashSet; import org.checkerframework.common.basetype.BaseTypeChecker; import org.checkerframework.common.basetype.BaseTypeVisitor; import org.checkerframework.framework.qual.StubFiles; import org.checkerframework.framework.source.SupportedOptions; /** * @author plvines * @checker_framework.manual #constant-value-checker Constant Value Checker */ @StubFiles("statically-executable.astub") @SupportedOptions(ValueChecker.REPORT_EVAL_WARNS) public class ValueChecker extends BaseTypeChecker { public static final String REPORT_EVAL_WARNS = "reportEvalWarns"; @Override protected BaseTypeVisitor<?> createSourceVisitor() { return new ValueVisitor(this); } @Override protected LinkedHashSet<Class<? extends BaseTypeChecker>> getImmediateSubcheckerClasses() { // Don't call super otherwise MethodVal will be added as a subChecker // which creates a circular dependency. return new LinkedHashSet<Class<? extends BaseTypeChecker>>(); } @Override public boolean shouldResolveReflection() { // Because this checker is a subchecker of MethodVal, // reflection can't be resolved. return false; } }