aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-07 20:09:18 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-07 20:09:18 +0100
commite4790b25e567aeaef20f29d1a6174413bc8ea0f0 (patch)
treeb5bd25ee79a42f7e76070bab6a489f92ceb086a2 /src/test/java
parentc7d528851c816f59740b83fa93d99ee857695d59 (diff)
Parse body of functions
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/parser/ParserFunctionDefinitionTests.java23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/parser/ParserFunctionDefinitionTests.java b/src/test/java/org/shedlang/compiler/parser/ParserFunctionDefinitionTests.java
index 80ecb5b2..a05642dc 100644
--- a/src/test/java/org/shedlang/compiler/parser/ParserFunctionDefinitionTests.java
+++ b/src/test/java/org/shedlang/compiler/parser/ParserFunctionDefinitionTests.java
@@ -26,6 +26,7 @@ public class ParserFunctionDefinitionTests {
.withBody(isSequence())
);
}
+
@Test
public void canParseFunctionWithEffect() {
var source = """
@@ -40,4 +41,26 @@ public class ParserFunctionDefinitionTests {
.withEffect(isOptionalOf(isUntypedTypeLevelReferenceNode("Io")))
);
}
+
+ @Test
+ public void canParseFunctionWithBody() {
+ var source = """
+ fun f() -> Unit {
+ a;
+ b;
+ c;
+ }""";
+
+ var node = parseString(source, Parser::parseNamespaceStatement);
+
+ assertThat(
+ node,
+ isUntypedFunctionDefinitionNode()
+ .withBody(isSequence(
+ isUntypedExpressionStatementNode(isUntypedReferenceNode("a")),
+ isUntypedExpressionStatementNode(isUntypedReferenceNode("b")),
+ isUntypedExpressionStatementNode(isUntypedReferenceNode("c"))
+ ))
+ );
+ }
}