aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-07-12 19:25:10 +0100
committerMichael Williamson <mike@zwobble.org>2023-07-12 19:25:10 +0100
commitc459a11534c60eec13e28f2823d751d6c68b698f (patch)
tree31c600cfd83595a0c7b534a050c67ee12933054d /src/test/java
parent383321e4cbd303255607adcd0f8a2338050c795d (diff)
Add TypedBlockNode
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/ast/typed/TypedFunctionDefinitionNodeMatcher.java2
-rw-r--r--src/test/java/org/shedlang/compiler/ast/typed/TypedNodeMatchers.java8
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerFunctionDefinitionTests.java18
-rw-r--r--src/test/java/org/shedlang/compiler/typechecker/TypeCheckerValTests.java4
4 files changed, 20 insertions, 12 deletions
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<TypedName
return new TypedFunctionDefinitionNodeMatcher(submatchers);
}
- public TypedFunctionDefinitionNodeMatcher withBody(Matcher<Iterable<? extends TypedFunctionStatementNode>> body) {
+ public TypedFunctionDefinitionNodeMatcher withBody(Matcher<TypedBlockNode> 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<TypedBlockNode> isTypedBlockNode(
+ Matcher<Iterable<? extends TypedFunctionStatementNode>> statements
+ ) {
+ return has("statements", x -> x.statements(), statements);
+ }
+
public static Matcher<TypedFunctionStatementNode> isTypedBlockReturnNode(
Matcher<TypedExpressionNode> 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))
- ))
+ )))
);
}