summaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-06-13 20:59:52 +0100
committerMichael Williamson <mike@zwobble.org>2026-06-13 20:59:52 +0100
commit39928746d5d65f74061aae83e0d1ace7b17a3bb3 (patch)
treeca8bd2dce9123ce165c6824543d64f64e5d5b8ae /src/main/java/org
parent5e90ace4f2729da69a0819d6b48968d0605def52 (diff)
Parse fields in sum definition
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java
index 31ead2a..1bafe96 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java
@@ -166,11 +166,17 @@ public class Parser {
tokens.skip(TokenType.SYMBOL_BRACE_OPEN);
var variants = parseMany(
- () -> tokens.isNext(TokenType.SYMBOL_BRACE_CLOSE),
+ () -> !tokens.isNext(TokenType.KEYWORD_VARIANT),
() -> parseSumVariantDefinition(tokens),
() -> true
);
+ var fields = parseMany(
+ () -> !tokens.isNext(TokenType.KEYWORD_FIELD),
+ () -> parseStructFieldDefinition(tokens),
+ () -> true
+ );
+
tokens.skip(TokenType.SYMBOL_BRACE_CLOSE);
var end = tokens.endPosition();
@@ -179,7 +185,7 @@ public class Parser {
return new UntypedSumDefinitionNode(
name.charSequence().toString(),
variants,
- List.of(),
+ fields,
docComment,
source
);