From bf55e95953edeefad8e83c034bfb4920d99c29ba Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 9 Jul 2023 19:13:02 +0100 Subject: Add UntypedBlockNode --- .../UntypedFunctionDefinitionNodeMatcher.java | 2 +- .../compiler/ast/untyped/UntypedNodeMatchers.java | 10 ++++-- .../parser/ParserFunctionDefinitionTests.java | 10 +++--- .../shedlang/compiler/parser/ParserIfTests.java | 36 +++++++++++----------- 4 files changed, 32 insertions(+), 26 deletions(-) (limited to 'src/test/java') diff --git a/src/test/java/org/shedlang/compiler/ast/untyped/UntypedFunctionDefinitionNodeMatcher.java b/src/test/java/org/shedlang/compiler/ast/untyped/UntypedFunctionDefinitionNodeMatcher.java index 8dae4a31..b94432da 100644 --- a/src/test/java/org/shedlang/compiler/ast/untyped/UntypedFunctionDefinitionNodeMatcher.java +++ b/src/test/java/org/shedlang/compiler/ast/untyped/UntypedFunctionDefinitionNodeMatcher.java @@ -29,7 +29,7 @@ public class UntypedFunctionDefinitionNodeMatcher extends MatcherBuilder> body) { + public UntypedFunctionDefinitionNodeMatcher withBody(Matcher body) { return with(has("body", x -> x.body(), body)); } 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 dce29e55..8ea1e13b 100644 --- a/src/test/java/org/shedlang/compiler/ast/untyped/UntypedNodeMatchers.java +++ b/src/test/java/org/shedlang/compiler/ast/untyped/UntypedNodeMatchers.java @@ -34,6 +34,12 @@ public class UntypedNodeMatchers { ); } + public static Matcher isUntypedBlockNode( + Matcher> statements + ) { + return has("statements", x -> x.statements(), statements); + } + public static Matcher isUntypedBlockReturnNode( Matcher expression ) { @@ -49,7 +55,7 @@ public class UntypedNodeMatchers { public static Matcher isUntypedConditionalBranchNode( Matcher condition, - Matcher> body + Matcher body ) { return instanceOf( UntypedConditionalBranchNode.class, @@ -89,7 +95,7 @@ public class UntypedNodeMatchers { public static Matcher isUntypedIfNode( Matcher> conditionalBranches, - Matcher> elseBody + Matcher elseBody ) { return instanceOf( UntypedIfNode.class, diff --git a/src/test/java/org/shedlang/compiler/parser/ParserFunctionDefinitionTests.java b/src/test/java/org/shedlang/compiler/parser/ParserFunctionDefinitionTests.java index 279309f6..d799fa4d 100644 --- a/src/test/java/org/shedlang/compiler/parser/ParserFunctionDefinitionTests.java +++ b/src/test/java/org/shedlang/compiler/parser/ParserFunctionDefinitionTests.java @@ -25,7 +25,7 @@ public class ParserFunctionDefinitionTests { .withParams(isUntypedParamsNode(isSequence(), isSequence())) .withEffect(isOptionalEmpty()) .withReturnType(isUntypedTypeLevelReferenceNode("Unit")) - .withBody(isSequence()) + .withBody(isUntypedBlockNode(isSequence())) ); } @@ -196,11 +196,11 @@ public class ParserFunctionDefinitionTests { assertThat( node, isUntypedFunctionDefinitionNode() - .withBody(isSequence( + .withBody(isUntypedBlockNode(isSequence( isUntypedExpressionStatementNode(isUntypedReferenceNode("a")), isUntypedExpressionStatementNode(isUntypedReferenceNode("b")), isUntypedExpressionStatementNode(isUntypedReferenceNode("c")) - )) + ))) ); } @@ -218,11 +218,11 @@ public class ParserFunctionDefinitionTests { assertThat( node, isUntypedFunctionDefinitionNode() - .withBody(isSequence( + .withBody(isUntypedBlockNode(isSequence( isUntypedExpressionStatementNode(isUntypedReferenceNode("a")), isUntypedExpressionStatementNode(isUntypedReferenceNode("b")), isUntypedBlockReturnNode(isUntypedReferenceNode("c")) - )) + ))) ); } diff --git a/src/test/java/org/shedlang/compiler/parser/ParserIfTests.java b/src/test/java/org/shedlang/compiler/parser/ParserIfTests.java index 5de0988d..5814dbf1 100644 --- a/src/test/java/org/shedlang/compiler/parser/ParserIfTests.java +++ b/src/test/java/org/shedlang/compiler/parser/ParserIfTests.java @@ -18,12 +18,12 @@ public class ParserIfTests { isSequence( isUntypedConditionalBranchNode( isUntypedReferenceNode("a"), - isSequence( + isUntypedBlockNode(isSequence( isUntypedExpressionStatementNode(isUntypedIntLiteralNode(1)) - ) + )) ) ), - isSequence() + isUntypedBlockNode(isSequence()) )); } @@ -37,14 +37,14 @@ public class ParserIfTests { isSequence( isUntypedConditionalBranchNode( isUntypedReferenceNode("a"), - isSequence( + isUntypedBlockNode(isSequence( isUntypedExpressionStatementNode(isUntypedIntLiteralNode(1)) - ) + )) ) ), - isSequence( + isUntypedBlockNode(isSequence( isUntypedExpressionStatementNode(isUntypedIntLiteralNode(2)) - ) + )) )); } @@ -58,18 +58,18 @@ public class ParserIfTests { isSequence( isUntypedConditionalBranchNode( isUntypedReferenceNode("a"), - isSequence( + isUntypedBlockNode(isSequence( isUntypedExpressionStatementNode(isUntypedIntLiteralNode(1)) - ) + )) ), isUntypedConditionalBranchNode( isUntypedReferenceNode("b"), - isSequence( + isUntypedBlockNode(isSequence( isUntypedExpressionStatementNode(isUntypedIntLiteralNode(2)) - ) + )) ) ), - isSequence() + isUntypedBlockNode(isSequence()) )); } @@ -83,20 +83,20 @@ public class ParserIfTests { isSequence( isUntypedConditionalBranchNode( isUntypedReferenceNode("a"), - isSequence( + isUntypedBlockNode(isSequence( isUntypedExpressionStatementNode(isUntypedIntLiteralNode(1)) - ) + )) ), isUntypedConditionalBranchNode( isUntypedReferenceNode("b"), - isSequence( + isUntypedBlockNode(isSequence( isUntypedExpressionStatementNode(isUntypedIntLiteralNode(2)) - ) + )) ) ), - isSequence( + isUntypedBlockNode(isSequence( isUntypedExpressionStatementNode(isUntypedIntLiteralNode(3)) - ) + )) )); } } -- cgit v1.2.3