blob: 5141db26f4823b6f894fa13d219c0bbf487eb164 [file] [log] [blame]
package org.checkerframework.checker.i18n;
import java.lang.annotation.Annotation;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;
import org.checkerframework.checker.i18n.qual.LocalizableKey;
import org.checkerframework.checker.i18n.qual.LocalizableKeyBottom;
import org.checkerframework.checker.i18n.qual.UnknownLocalizableKey;
import org.checkerframework.checker.propkey.PropertyKeyAnnotatedTypeFactory;
import org.checkerframework.common.basetype.BaseTypeChecker;
import org.checkerframework.framework.type.treeannotator.ListTreeAnnotator;
import org.checkerframework.framework.type.treeannotator.TreeAnnotator;
/** A PropertyKeyATF that uses LocalizableKey to annotate the keys. */
public class LocalizableKeyAnnotatedTypeFactory extends PropertyKeyAnnotatedTypeFactory {
public LocalizableKeyAnnotatedTypeFactory(BaseTypeChecker checker) {
super(checker);
// Does not call postInit() because its superclass does.
// If we ever add code to this constructor, it needs to:
// * call a superclass constructor that does not call postInit(), and
// * call postInit() itself.
}
@Override
protected Set<Class<? extends Annotation>> createSupportedTypeQualifiers() {
return new LinkedHashSet<>(
Arrays.asList(
LocalizableKey.class, LocalizableKeyBottom.class, UnknownLocalizableKey.class));
}
@Override
public TreeAnnotator createTreeAnnotator() {
return new ListTreeAnnotator(
super.createBasicTreeAnnotator(), new KeyLookupTreeAnnotator(this, LocalizableKey.class));
}
}