| package org.checkerframework.framework.qual; |
| |
| import java.util.ArrayList; |
| import java.util.Arrays; |
| import java.util.List; |
| |
| /** |
| * Specifies kinds of literal trees. |
| * |
| * <p>These correspond to the *_LITERAL constants in {@link com.sun.source.tree.Tree.Kind}. However, |
| * that enum is in the tools.jar which is not on the user's classpath by default. This enum is used |
| * by meta-annotations, such as {@link QualifierForLiterals}, instead. |
| */ |
| // https://docs.oracle.com/javase/8/docs/technotes/tools/findingclasses.html#bootclass |
| public enum LiteralKind { |
| /** Corresponds to {@link com.sun.source.tree.Tree.Kind#NULL_LITERAL} trees. */ |
| NULL, |
| /** Corresponds to {@link com.sun.source.tree.Tree.Kind#INT_LITERAL} trees. */ |
| INT, |
| /** Corresponds to {@link com.sun.source.tree.Tree.Kind#LONG_LITERAL} trees. */ |
| LONG, |
| /** Corresponds to {@link com.sun.source.tree.Tree.Kind#FLOAT_LITERAL} trees. */ |
| FLOAT, |
| /** Corresponds to {@link com.sun.source.tree.Tree.Kind#DOUBLE_LITERAL} trees. */ |
| DOUBLE, |
| /** Corresponds to {@link com.sun.source.tree.Tree.Kind#BOOLEAN_LITERAL} trees. */ |
| BOOLEAN, |
| /** Corresponds to {@link com.sun.source.tree.Tree.Kind#CHAR_LITERAL} trees. */ |
| CHAR, |
| /** Corresponds to {@link com.sun.source.tree.Tree.Kind#STRING_LITERAL} trees. */ |
| STRING, |
| /** Shorthand for all other LiteralKind constants, other than PRIMITIVE. */ |
| ALL, |
| /** Shorthand for all primitive LiteralKind constants: INT, LONG, FLOAT, DOUBLE, BOOLEAN, CHAR. */ |
| PRIMITIVE; |
| |
| /** |
| * Returns all LiteralKinds except for ALL and PRIMITIVE (which are shorthands for groups of other |
| * LiteralKinds). |
| * |
| * @return list of LiteralKinds except for ALL and PRIMITIVE |
| */ |
| public static List<LiteralKind> allLiteralKinds() { |
| List<LiteralKind> list = new ArrayList<>(Arrays.asList(values())); |
| list.remove(ALL); |
| list.remove(PRIMITIVE); |
| return list; |
| } |
| |
| /** |
| * Returns the primitive {@code LiteralKind}s: INT, LONG, FLOAT, DOUBLE, BOOLEAN, CHAR. This is |
| * all LiteralKinds except for NULL, STRING, and ones that are shorthands for groups of other |
| * LiteralKinds. |
| * |
| * @return list of LiteralKinds except for NULL and STRING |
| */ |
| public static List<LiteralKind> primitiveLiteralKinds() { |
| return Arrays.asList(INT, LONG, FLOAT, DOUBLE, BOOLEAN, CHAR); |
| } |
| } |