Use EnumSet internal for Token type checks (#1803)

This commit is contained in:
Jen Basch
2026-07-29 16:09:52 -07:00
committed by GitHub
parent 871041e655
commit 8ad5759630
@@ -15,6 +15,7 @@
*/ */
package org.pkl.parser; package org.pkl.parser;
import java.util.EnumSet;
import java.util.Locale; import java.util.Locale;
public enum Token { public enum Token {
@@ -135,16 +136,16 @@ public enum Token {
STRING_END, STRING_END,
STRING_PART; STRING_PART;
private static final EnumSet<Token> modifiers =
EnumSet.of(EXTERNAL, ABSTRACT, OPEN, LOCAL, HIDDEN, FIXED, CONST);
public boolean isModifier() { public boolean isModifier() {
return switch (this) { return modifiers.contains(this);
case EXTERNAL, ABSTRACT, OPEN, LOCAL, HIDDEN, FIXED, CONST -> true;
default -> false;
};
} }
public boolean isKeyword() { private static final EnumSet<Token> keywords =
return switch (this) { EnumSet.of(
case ABSTRACT, ABSTRACT,
AMENDS, AMENDS,
AS, AS,
CLASS, CLASS,
@@ -189,46 +190,25 @@ public enum Token {
DELETE, DELETE,
CASE, CASE,
SWITCH, SWITCH,
VARARG -> VARARG);
true;
default -> false; public boolean isKeyword() {
}; return keywords.contains(this);
} }
private static final EnumSet<Token> operators =
EnumSet.of(
POW, STAR, DIV, INT_DIV, MOD, PLUS, MINUS, GT, GTE, LT, LTE, IS, AS, EQUAL, NOT_EQUAL,
AND, OR, PIPE, COALESCE, DOT, QDOT, LBRACK);
public boolean isOperator() { public boolean isOperator() {
return switch (this) { return operators.contains(this);
case POW,
STAR,
DIV,
INT_DIV,
MOD,
PLUS,
MINUS,
GT,
GTE,
LT,
LTE,
IS,
AS,
EQUAL,
NOT_EQUAL,
AND,
OR,
PIPE,
COALESCE,
DOT,
QDOT,
LBRACK ->
true;
default -> false;
};
} }
private static final EnumSet<Token> affixes = EnumSet.of(LINE_COMMENT, BLOCK_COMMENT, SEMICOLON);
public boolean isAffix() { public boolean isAffix() {
return switch (this) { return affixes.contains(this);
case LINE_COMMENT, BLOCK_COMMENT, SEMICOLON -> true;
default -> false;
};
} }
public String text() { public String text() {