diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-07-03 11:56:38 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-07-03 11:56:38 +0100 |
| commit | 16120bc80e13a557a6065f08c1da24453920241a (patch) | |
| tree | 1054377b7a50784bd8c00fd19fc0b391d9887078 /src/test/java | |
| parent | ac10379092046d3dfa03e353ae8125a517813961 (diff) | |
Parse val statements
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/shedlang/compiler/ast/untyped/UntypedNodeMatchers.java | 18 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/parser/ParserValTests.java | 21 |
2 files changed, 39 insertions, 0 deletions
diff --git a/src/test/java/org/shedlang/compiler/ast/untyped/UntypedNodeMatchers.java b/src/test/java/org/shedlang/compiler/ast/untyped/UntypedNodeMatchers.java index 95d30cc6..aeee9df1 100644 --- a/src/test/java/org/shedlang/compiler/ast/untyped/UntypedNodeMatchers.java +++ b/src/test/java/org/shedlang/compiler/ast/untyped/UntypedNodeMatchers.java @@ -63,10 +63,28 @@ public class UntypedNodeMatchers { ); } + public static Matcher<UntypedTargetNode> isUntypedTargetVariableNode(String name) { + return instanceOf( + UntypedTargetNode.Variable.class, + has("name", x -> x.name(), equalTo(name)) + ); + } + public static Matcher<UntypedTypeLevelExpressionNode> isUntypedTypeLevelReferenceNode(String name) { return instanceOf( UntypedTypeLevelReferenceNode.class, has("name", x -> x.name(), equalTo(name)) ); } + + public static Matcher<UntypedFunctionStatementNode> isUntypedValNode( + Matcher<UntypedTargetNode> target, + Matcher<UntypedExpressionNode> expression + ) { + return instanceOf( + UntypedValNode.class, + has("target", x -> x.target(), target), + has("expression", x -> x.expression(), expression) + ); + } } diff --git a/src/test/java/org/shedlang/compiler/parser/ParserValTests.java b/src/test/java/org/shedlang/compiler/parser/ParserValTests.java new file mode 100644 index 00000000..99b07e54 --- /dev/null +++ b/src/test/java/org/shedlang/compiler/parser/ParserValTests.java @@ -0,0 +1,21 @@ +package org.shedlang.compiler.parser; + +import org.junit.jupiter.api.Test; + +import static org.shedlang.compiler.ast.untyped.UntypedNodeMatchers.*; +import static org.shedlang.compiler.parser.ParserTesting.parseString; +import static org.zwobble.precisely.AssertThat.assertThat; + +public class ParserValTests { + @Test + public void canParseValAsFunctionStatement() { + var source = "val x = y;"; + + var node = parseString(source, Parser::parseFunctionStatement); + + assertThat(node, isUntypedValNode( + isUntypedTargetVariableNode("x"), + isUntypedReferenceNode("y") + )); + } +} |
