From c459a11534c60eec13e28f2823d751d6c68b698f Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 12 Jul 2023 19:25:10 +0100 Subject: Add TypedBlockNode --- .../ast/typed/TypedFunctionDefinitionNodeMatcher.java | 2 +- .../shedlang/compiler/ast/typed/TypedNodeMatchers.java | 8 ++++++++ .../TypeCheckerFunctionDefinitionTests.java | 18 +++++++++--------- .../compiler/typechecker/TypeCheckerValTests.java | 4 ++-- 4 files changed, 20 insertions(+), 12 deletions(-) (limited to 'src/test/java') diff --git a/src/test/java/org/shedlang/compiler/ast/typed/TypedFunctionDefinitionNodeMatcher.java b/src/test/java/org/shedlang/compiler/ast/typed/TypedFunctionDefinitionNodeMatcher.java index 0d4f4cfa..c90e2578 100644 --- a/src/test/java/org/shedlang/compiler/ast/typed/TypedFunctionDefinitionNodeMatcher.java +++ b/src/test/java/org/shedlang/compiler/ast/typed/TypedFunctionDefinitionNodeMatcher.java @@ -30,7 +30,7 @@ public class TypedFunctionDefinitionNodeMatcher extends MatcherBuilder> body) { + public TypedFunctionDefinitionNodeMatcher withBody(Matcher body) { return with(has("body", x -> x.body(), body)); } diff --git a/src/test/java/org/shedlang/compiler/ast/typed/TypedNodeMatchers.java b/src/test/java/org/shedlang/compiler/ast/typed/TypedNodeMatchers.java index 56f73a12..fa7fe7ba 100644 --- a/src/test/java/org/shedlang/compiler/ast/typed/TypedNodeMatchers.java +++ b/src/test/java/org/shedlang/compiler/ast/typed/TypedNodeMatchers.java @@ -1,5 +1,7 @@ package org.shedlang.compiler.ast.typed; +import org.shedlang.compiler.ast.untyped.UntypedBlockNode; +import org.shedlang.compiler.ast.untyped.UntypedFunctionStatementNode; import org.shedlang.compiler.types.Type; import org.shedlang.compiler.types.TypeLevelValue; import org.zwobble.precisely.Matcher; @@ -29,6 +31,12 @@ public class TypedNodeMatchers { ); } + public static Matcher isTypedBlockNode( + Matcher> statements + ) { + return has("statements", x -> x.statements(), statements); + } + public static Matcher isTypedBlockReturnNode( Matcher expression ) { diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java index 4c640f30..a39ec685 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java @@ -39,7 +39,7 @@ public class TypeCheckerFunctionDefinitionTests { .withParams(isTypedParamsNode(isSequence(), isSequence())) .withEffect(isOptionalEmpty()) .withReturnType(isTypedTypeLevelReferenceNode("Unit", Types.UNIT)) - .withBody(isSequence()) + .withBody(isTypedBlockNode(isSequence())) .withType(new FunctionType(List.of(), List.of(), Effects.NONE, Types.UNIT)) ); } @@ -113,9 +113,9 @@ public class TypeCheckerFunctionDefinitionTests { assertThat( typed.value(), isTypedFunctionDefinitionNode() - .withBody(isSequence( + .withBody(isTypedBlockNode(isSequence( isTypedExpressionStatementNode(isTypedStringLiteralNode("hello")) - )) + ))) ); } @@ -137,9 +137,9 @@ public class TypeCheckerFunctionDefinitionTests { assertThat( typed.value(), isTypedFunctionDefinitionNode() - .withBody(isSequence( + .withBody(isTypedBlockNode(isSequence( isTypedExpressionStatementNode(isTypedReferenceNode("x", Types.STRING)) - )) + ))) ); } @@ -161,9 +161,9 @@ public class TypeCheckerFunctionDefinitionTests { assertThat( typed.value(), isTypedFunctionDefinitionNode() - .withBody(isSequence( + .withBody(isTypedBlockNode(isSequence( isTypedExpressionStatementNode(isTypedReferenceNode("x", Types.STRING)) - )) + ))) ); } @@ -195,9 +195,9 @@ public class TypeCheckerFunctionDefinitionTests { assertThat( typed.value(), isTypedFunctionDefinitionNode() - .withBody(isSequence( + .withBody(isTypedBlockNode(isSequence( isTypedExpressionStatementNode(isTypedCallNode().withHasEffects(true)) - )) + ))) ); } diff --git a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerValTests.java b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerValTests.java index 447ea672..11a66f12 100644 --- a/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerValTests.java +++ b/src/test/java/org/shedlang/compiler/typechecker/TypeCheckerValTests.java @@ -57,10 +57,10 @@ public class TypeCheckerValTests { assertThat( typed.value(), isTypedFunctionDefinitionNode() - .withBody(isSequence( + .withBody(isTypedBlockNode(isSequence( isTypedValNode(anything(), anything()), isTypedExpressionStatementNode(isTypedReferenceNode("x", Types.STRING)) - )) + ))) ); } -- cgit v1.2.3