summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-05-10 15:26:00 +0100
committerMichael Williamson <mike@zwobble.org>2026-05-10 15:26:00 +0100
commit4ecf8383268b2698bf4f81390da26898a6a5797f (patch)
tree7ed4e5b7e4238cc1d15a7a78732fc887da93c9a0 /src
parent5648afd950141a582b4585be8a30b7b3f808e35a (diff)
Parse doc comment for sum definitions
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java7
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/parser/ParserSumDefinitionTests.java18
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"))
+ ));
+ }
}