diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-06-13 20:59:52 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-06-13 20:59:52 +0100 |
| commit | 39928746d5d65f74061aae83e0d1ace7b17a3bb3 (patch) | |
| tree | ca8bd2dce9123ce165c6824543d64f64e5d5b8ae /src/main | |
| parent | 5e90ace4f2729da69a0819d6b48968d0605def52 (diff) | |
Parse fields in sum definition
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java | 10 |
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 ); |
