summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-04-28 23:24:33 +0100
committerMichael Williamson <mike@zwobble.org>2026-04-28 23:24:33 +0100
commit2d9d692f3b89fa25a5e8b761118d517e2e47f4f1 (patch)
tree1e10cceff8a1b5efa6574e101354dfea6019fd26
parent0fe17002d4147ee641262cab20e66c6ba0d1b1e6 (diff)
Tokenize variant keyword
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java1
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java2
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java11
3 files changed, 14 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java b/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java
index 0fb4750..da9a37f 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/TokenType.java
@@ -8,6 +8,7 @@ enum TokenType {
KEYWORD_FIELD,
KEYWORD_STRUCT,
KEYWORD_SUM,
+ KEYWORD_VARIANT,
SYMBOL_BRACE_OPEN,
SYMBOL_BRACE_CLOSE,
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java
index f3704f3..d09ed64 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Tokenizer.java
@@ -90,6 +90,8 @@ class Tokenizer {
tokenType = TokenType.KEYWORD_STRUCT;
} else if (CharSequence.compare(sourceRange.charSequence(), "sum") == 0) {
tokenType = TokenType.KEYWORD_SUM;
+ } else if (CharSequence.compare(sourceRange.charSequence(), "variant") == 0) {
+ tokenType = TokenType.KEYWORD_VARIANT;
} else {
tokenType = TokenType.IDENTIFIER;
}
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java
index b73775a..698a70d 100644
--- a/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/parser/TokenizerTests.java
@@ -52,6 +52,17 @@ public class TokenizerTests {
}
@Test
+ public void keywordVariantIsTokenized() {
+ var sourceText = SourceText.fromString("<string>", "variant");
+
+ var tokens = Tokenizer.tokenize(sourceText);
+
+ assertThat(tokens.tokens(), isSequence(
+ equalTo(new Token(TokenType.KEYWORD_VARIANT, sourceRange(sourceText, 0, 7)))
+ ));
+ }
+
+ @Test
public void alphabeticIdentifierIsTokenized() {
var sourceText = SourceText.fromString("<string>", "blah");