diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-06-07 20:03:39 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-06-07 20:03:39 +0100 |
| commit | 244cc7ad6855696891cd8c72bfedb68c91fd1aaa (patch) | |
| tree | be447af55270b4a24bff3d685a1694dbeba0d9c6 /src/test/java/org/shedlang/compiler/parser | |
| parent | 8258a15b00687f6d619722ba04843e5f0aaebe73 (diff) | |
Add parser for minimal functions
Diffstat (limited to 'src/test/java/org/shedlang/compiler/parser')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/parser/ParserFunctionDefinitionTests.java | 29 |
1 files changed, 29 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 new file mode 100644 index 00000000..34c50065 --- /dev/null +++ b/src/test/java/org/shedlang/compiler/parser/ParserFunctionDefinitionTests.java @@ -0,0 +1,29 @@ +package org.shedlang.compiler.parser; + +import org.junit.jupiter.api.Test; + +import static org.shedlang.compiler.ast.UntypedNodeMatchers.*; +import static org.shedlang.compiler.parser.ParserTesting.parseString; +import static org.zwobble.precisely.AssertThat.assertThat; +import static org.zwobble.precisely.Matchers.*; + +public class ParserFunctionDefinitionTests { + @Test + public void canParseMinimalFunction() { + var source = """ + fun f() -> Unit { + }"""; + + var node = parseString(source, Parser::parseNamespaceStatement); + + assertThat( + node, + isUntypedFunctionDefinitionNode() + .withName("f") + .withParams(isUntypedParamsNode(isSequence(), isSequence())) + .withEffect(isOptionalEmpty()) + .withReturnType(isUntypedTypeLevelReferenceNode("Unit")) + .withBody(isSequence()) + ); + } +} |
