| 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)); |
| } |
| } |