diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-05-10 15:26:00 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-05-10 15:26:00 +0100 |
| commit | 4ecf8383268b2698bf4f81390da26898a6a5797f (patch) | |
| tree | 7ed4e5b7e4238cc1d15a7a78732fc887da93c9a0 /src | |
| parent | 5648afd950141a582b4585be8a30b7b3f808e35a (diff) | |
Parse doc comment for sum definitions
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java | 7 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/hobgoblin/compiler/parser/ParserSumDefinitionTests.java | 18 |
2 files changed, 22 insertions, 3 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 49464b6..c50c4d6 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java @@ -54,7 +54,7 @@ public class Parser { if (tokens.isNext(TokenType.KEYWORD_STRUCT)) { return parseStructDefinition(tokens, docComment); } else if (tokens.isNext(TokenType.KEYWORD_SUM)) { - return parseSumDefinition(tokens); + return parseSumDefinition(tokens, docComment); } else { throw new UnsupportedOperationException("TODO"); } @@ -130,7 +130,8 @@ public class Parser { } private static UntypedSumDefinitionNode parseSumDefinition( - TokenIterator tokens + TokenIterator tokens, + String docComment ) { var start = tokens.startPosition(); @@ -152,7 +153,7 @@ public class Parser { return new UntypedSumDefinitionNode( name.charSequence().toString(), variants, - "", + docComment, source ); } diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/parser/ParserSumDefinitionTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/parser/ParserSumDefinitionTests.java index 825511e..c512c6f 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/parser/ParserSumDefinitionTests.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/parser/ParserSumDefinitionTests.java @@ -79,4 +79,22 @@ public class ParserSumDefinitionTests { )) )); } + + @Test + public void sumWithDocComment() { + var source = """ + /// A 2D shape. + sum Shape { + }"""; + + var node = parseString( + source, + Parser::parseNamespaceStatement + ); + + assertThat(node, instanceOf( + UntypedSumDefinitionNode.class, + has("docComment", UntypedSumDefinitionNode::docComment, equalTo("A 2D shape.\n")) + )); + } } |
