diff options
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/ast/UntypedFunctionDefinitionNodeMatcher.java | 2 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/parser/ParserFunctionDefinitionTests.java | 14 |
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"))) + ); + } } |
