aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-06-13 20:35:55 +0100
committerMichael Williamson <mike@zwobble.org>2023-06-13 20:35:55 +0100
commitf2ab791334abe75807c4bff32b17fa379b466193 (patch)
tree243648c20fc20044fff8129a3ea272d8a9fe80a5 /src/test/java
parent6366198588909777722d4834085ebdf9838f5828 (diff)
Put namespace name onto namespace nodes
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/org/shedlang/compiler/ast/typed/Typed.java10
-rw-r--r--src/test/java/org/shedlang/compiler/ast/untyped/Untyped.java3
-rw-r--r--src/test/java/org/shedlang/compiler/parser/ParserNamespaceTests.java11
-rw-r--r--src/test/java/org/shedlang/compiler/stackir/StackCompilerNamespaceTests.java21
4 files changed, 31 insertions, 14 deletions
diff --git a/src/test/java/org/shedlang/compiler/ast/typed/Typed.java b/src/test/java/org/shedlang/compiler/ast/typed/Typed.java
index 3b12bac6..a36c9679 100644
--- a/src/test/java/org/shedlang/compiler/ast/typed/Typed.java
+++ b/src/test/java/org/shedlang/compiler/ast/typed/Typed.java
@@ -1,6 +1,7 @@
package org.shedlang.compiler.ast.typed;
import org.shedlang.compiler.sources.Sources;
+import org.shedlang.compiler.types.NamespaceName;
import org.shedlang.compiler.types.Type;
import org.shedlang.compiler.types.TypeLevelValue;
import org.shedlang.compiler.types.Types;
@@ -43,7 +44,14 @@ public class Typed {
}
public static TypedNamespaceNode namespace(List<TypedNamespaceStatementNode> body) {
- return new TypedNamespaceNode(body, Sources.NULL);
+ return namespace(NamespaceName.of("DefaultNamespaceName"), body);
+ }
+
+ public static TypedNamespaceNode namespace(
+ NamespaceName namespaceName,
+ List<TypedNamespaceStatementNode> body
+ ) {
+ return new TypedNamespaceNode(namespaceName, body, Sources.NULL);
}
public static TypedStringLiteralNode stringLiteral(String value) {
diff --git a/src/test/java/org/shedlang/compiler/ast/untyped/Untyped.java b/src/test/java/org/shedlang/compiler/ast/untyped/Untyped.java
index 0107348d..1f2f5c95 100644
--- a/src/test/java/org/shedlang/compiler/ast/untyped/Untyped.java
+++ b/src/test/java/org/shedlang/compiler/ast/untyped/Untyped.java
@@ -1,6 +1,7 @@
package org.shedlang.compiler.ast.untyped;
import org.shedlang.compiler.sources.Sources;
+import org.shedlang.compiler.types.NamespaceName;
import java.math.BigInteger;
import java.util.List;
@@ -50,7 +51,7 @@ public class Untyped {
}
public static UntypedNamespaceNode namespace(List<UntypedNamespaceStatementNode> body) {
- return new UntypedNamespaceNode(body, Sources.NULL);
+ return new UntypedNamespaceNode(NamespaceName.of("Example"), body, Sources.NULL);
}
public static UntypedReferenceNode reference(String name) {
diff --git a/src/test/java/org/shedlang/compiler/parser/ParserNamespaceTests.java b/src/test/java/org/shedlang/compiler/parser/ParserNamespaceTests.java
index 7770575f..9c14e5b4 100644
--- a/src/test/java/org/shedlang/compiler/parser/ParserNamespaceTests.java
+++ b/src/test/java/org/shedlang/compiler/parser/ParserNamespaceTests.java
@@ -2,6 +2,7 @@ package org.shedlang.compiler.parser;
import org.junit.jupiter.api.Test;
import org.shedlang.compiler.ast.untyped.UntypedNamespaceNode;
+import org.shedlang.compiler.types.NamespaceName;
import static org.shedlang.compiler.ast.untyped.UntypedNodeMatchers.isUntypedFunctionDefinitionNode;
import static org.shedlang.compiler.parser.ParserTesting.parseString;
@@ -15,10 +16,14 @@ public class ParserNamespaceTests {
var node = parseString(
source,
- Parser::parseNamespace
+ tokens -> Parser.parseNamespace(tokens, NamespaceName.of("Example", "Project"))
);
- assertThat(node, instanceOf(UntypedNamespaceNode.class));
+ assertThat(node, instanceOf(
+ UntypedNamespaceNode.class,
+ has("namespaceName", x -> x.namespaceName(), equalTo(NamespaceName.of("Example", "Project"))),
+ has("body", x -> x.body(), isSequence())
+ ));
}
@Test
@@ -33,7 +38,7 @@ public class ParserNamespaceTests {
var node = parseString(
source,
- Parser::parseNamespace
+ tokens -> Parser.parseNamespace(tokens, NamespaceName.of("Example", "Project"))
);
assertThat(node, instanceOf(
diff --git a/src/test/java/org/shedlang/compiler/stackir/StackCompilerNamespaceTests.java b/src/test/java/org/shedlang/compiler/stackir/StackCompilerNamespaceTests.java
index a3b34c55..32ff72ba 100644
--- a/src/test/java/org/shedlang/compiler/stackir/StackCompilerNamespaceTests.java
+++ b/src/test/java/org/shedlang/compiler/stackir/StackCompilerNamespaceTests.java
@@ -18,16 +18,19 @@ public class StackCompilerNamespaceTests {
public void bodyOfNamespaceIsCompiledWithNamesBeingExported() {
var namespaceName = new NamespaceName(List.of("Example"));
- var node = Typed.namespace(List.of(
- TypedFunctionDefinitionNode.builder()
- .withName("f")
- .addPositionalParam("x", Typed.typeLevelReference("String", Types.STRING))
- .addNamedParam("y", Typed.typeLevelReference("Int", Types.INT))
- .addStatement(Typed.expressionStatement(Typed.stringLiteral("hello")))
- .build()
- ));
+ var node = Typed.namespace(
+ namespaceName,
+ List.of(
+ TypedFunctionDefinitionNode.builder()
+ .withName("f")
+ .addPositionalParam("x", Typed.typeLevelReference("String", Types.STRING))
+ .addNamedParam("y", Typed.typeLevelReference("Int", Types.INT))
+ .addStatement(Typed.expressionStatement(Typed.stringLiteral("hello")))
+ .build()
+ )
+ );
- var instructions = StackCompiler.compileNamespace(node, namespaceName);
+ var instructions = StackCompiler.compileNamespace(node);
assertThat(instructions, isSequence(
instanceOf(