From 716a7e63392e01dff99111e41c6233655e76e466 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 3 Mar 2024 10:33:47 +0000 Subject: Add type-level args node for more specific source --- .../ast/untyped/UntypedCallNodeMatcher.java | 21 +++++++++++++++------ .../shedlang/compiler/parser/ParserCallTests.java | 14 +++++++------- 2 files changed, 22 insertions(+), 13 deletions(-) (limited to 'src/test/java') diff --git a/src/test/java/org/shedlang/compiler/ast/untyped/UntypedCallNodeMatcher.java b/src/test/java/org/shedlang/compiler/ast/untyped/UntypedCallNodeMatcher.java index 3514b522..64cbe0dd 100644 --- a/src/test/java/org/shedlang/compiler/ast/untyped/UntypedCallNodeMatcher.java +++ b/src/test/java/org/shedlang/compiler/ast/untyped/UntypedCallNodeMatcher.java @@ -5,10 +5,7 @@ import org.pcollections.PVector; import org.shedlang.compiler.testing.MatcherBuilder; import org.zwobble.precisely.Matcher; -import java.util.Optional; - -import static org.zwobble.precisely.Matchers.equalTo; -import static org.zwobble.precisely.Matchers.has; +import static org.zwobble.precisely.Matchers.*; public class UntypedCallNodeMatcher extends MatcherBuilder { public static UntypedCallNodeMatcher empty() { @@ -29,10 +26,22 @@ public class UntypedCallNodeMatcher extends MatcherBuilder x.typeLevelArgs(), isOptionalEmpty())); + } + public UntypedCallNodeMatcher withTypeLevelArgs( - Matcher>> typeLevelArgs + Matcher> typeLevelArgs ) { - return with(has("typeLevelArgs", x -> x.typeLevelArgs(), typeLevelArgs)); + return with(has( + "typeLevelArgs", + x -> x.typeLevelArgs(), + isOptionalOf(has( + "args", + x -> x.args(), + typeLevelArgs + )) + )); } public UntypedCallNodeMatcher withArgs(Matcher args) { diff --git a/src/test/java/org/shedlang/compiler/parser/ParserCallTests.java b/src/test/java/org/shedlang/compiler/parser/ParserCallTests.java index db0cb5de..745c3e7c 100644 --- a/src/test/java/org/shedlang/compiler/parser/ParserCallTests.java +++ b/src/test/java/org/shedlang/compiler/parser/ParserCallTests.java @@ -213,7 +213,7 @@ public class ParserCallTests { assertThat( node, isUntypedCallNode() - .withTypeLevelArgs(isOptionalEmpty()) + .withoutTypeLevelArgs() ); } @@ -226,9 +226,9 @@ public class ParserCallTests { assertThat( node, isUntypedCallNode() - .withTypeLevelArgs(isOptionalOf(isSequence( + .withTypeLevelArgs(isSequence( isUntypedTypeLevelReferenceNode("A") - ))) + )) ); } @@ -241,11 +241,11 @@ public class ParserCallTests { assertThat( node, isUntypedCallNode() - .withTypeLevelArgs(isOptionalOf(isSequence( + .withTypeLevelArgs(isSequence( isUntypedTypeLevelReferenceNode("A"), isUntypedTypeLevelReferenceNode("B"), isUntypedTypeLevelReferenceNode("C") - ))) + )) ); } @@ -258,9 +258,9 @@ public class ParserCallTests { assertThat( node, isUntypedCallNode() - .withTypeLevelArgs(isOptionalOf(isSequence( + .withTypeLevelArgs(isSequence( isUntypedTypeLevelReferenceNode("A") - ))) + )) ); } } -- cgit v1.2.3