blob: f296fd9708c2b470dfb7234aab899450c94a9004 [file] [log] [blame]
package org.checkerframework.common.reflection;
import java.util.LinkedHashSet;
import org.checkerframework.common.basetype.BaseTypeChecker;
import org.checkerframework.common.basetype.BaseTypeVisitor;
import org.checkerframework.common.value.ValueChecker;
/**
* The ClassVal Checker provides a sound estimate of the binary name of Class objects.
*
* @checker_framework.manual #methodval-and-classval-checkers ClassVal Checker
*/
public class ClassValChecker extends BaseTypeChecker {
@Override
protected BaseTypeVisitor<?> createSourceVisitor() {
return new ClassValVisitor(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.
LinkedHashSet<Class<? extends BaseTypeChecker>> subCheckers = new LinkedHashSet<>();
subCheckers.add(ValueChecker.class);
return subCheckers;
}
@Override
public boolean shouldResolveReflection() {
// Because this checker is a subchecker of MethodVal,
// reflection can't be resolved.
return false;
}
}