diff options
3 files changed, 23 insertions, 3 deletions
diff --git a/examples/02-sum/src/shapes.hob b/examples/02-sum/src/shapes.hob index 08336c5..d5042e5 100644 --- a/examples/02-sum/src/shapes.hob +++ b/examples/02-sum/src/shapes.hob @@ -1,3 +1,4 @@ +/// A 2D shape. sum Shape { variant Rectangle; variant Triangle; 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")) + )); + } } |
