aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/ast/UntypedFunctionDefinitionNodeMatcher.java2
-rw-r--r--src/test/java/org/shedlang/compiler/parser/ParserFunctionDefinitionTests.java14
2 files changed, 15 insertions, 1 deletions
diff --git a/src/test/java/org/shedlang/compiler/ast/UntypedFunctionDefinitionNodeMatcher.java b/src/test/java/org/shedlang/compiler/ast/UntypedFunctionDefinitionNodeMatcher.java
index 775cf5f5..0a52482d 100644
--- a/src/test/java/org/shedlang/compiler/ast/UntypedFunctionDefinitionNodeMatcher.java
+++ b/src/test/java/org/shedlang/compiler/ast/UntypedFunctionDefinitionNodeMatcher.java
@@ -32,7 +32,7 @@ public class UntypedFunctionDefinitionNodeMatcher extends MatcherBuilder<Untyped
return with(has("body", x -> x.body(), body));
}
- public UntypedFunctionDefinitionNodeMatcher withEffect(Matcher<Optional<UntypedTypeLevelExpressionNode>> effect) {
+ public UntypedFunctionDefinitionNodeMatcher withEffect(Matcher<Optional<? extends UntypedTypeLevelExpressionNode>> effect) {
return with(has("effect", x -> x.effect(), effect));
}
diff --git a/src/test/java/org/shedlang/compiler/parser/ParserFunctionDefinitionTests.java b/src/test/java/org/shedlang/compiler/parser/ParserFunctionDefinitionTests.java
index 34c50065..80ecb5b2 100644
--- a/src/test/java/org/shedlang/compiler/parser/ParserFunctionDefinitionTests.java
+++ b/src/test/java/org/shedlang/compiler/parser/ParserFunctionDefinitionTests.java
@@ -26,4 +26,18 @@ public class ParserFunctionDefinitionTests {
.withBody(isSequence())
);
}
+ @Test
+ public void canParseFunctionWithEffect() {
+ var source = """
+ fun f() ! Io -> Unit {
+ }""";
+
+ var node = parseString(source, Parser::parseNamespaceStatement);
+
+ assertThat(
+ node,
+ isUntypedFunctionDefinitionNode()
+ .withEffect(isOptionalOf(isUntypedTypeLevelReferenceNode("Io")))
+ );
+ }
}