summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-06-14 10:45:49 +0100
committerMichael Williamson <mike@zwobble.org>2026-06-14 10:45:49 +0100
commit6f52cdc6a2593094652d0ff018b4cde1276a1815 (patch)
treeb551c21e84a340bb8c78ac45714ce6272f33a59e /src
parent7c03dc797ea3ac5f41ced2a79b5c254557355a84 (diff)
Add import node
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedImportNode.java29
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNamespaceNode.java18
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java1
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedImportNodeMatcher.java38
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNamespaceNodeMatcher.java4
5 files changed, 83 insertions, 7 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedImportNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedImportNode.java
new file mode 100644
index 0000000..d457b60
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedImportNode.java
@@ -0,0 +1,29 @@
+// Generated by hobgoblin.
+
+package org.zwobble.hobgoblin.compiler.ast.untyped;
+
+public record UntypedImportNode(java.util.List<String> importedNames, org.zwobble.hobgoblin.compiler.types.NamespaceName namespaceName) {
+ public static org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode.Builder arbitrary() {
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode.Builder(java.util.List.of(), org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitraryNamespaceName());
+ }
+
+ public record Builder(java.util.List<String> importedNames, org.zwobble.hobgoblin.compiler.types.NamespaceName namespaceName) {
+ public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode build() {
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode(importedNames, namespaceName);
+ }
+
+ public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode.Builder withImportedNames(java.util.List<String> importedNames) {
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode.Builder(importedNames, namespaceName);
+ }
+
+ public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode.Builder withNamespaceName(org.zwobble.hobgoblin.compiler.types.NamespaceName namespaceName) {
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode.Builder(importedNames, namespaceName);
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode.Builder body
+ // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode.Builder body
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode body
+ // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode body
+}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNamespaceNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNamespaceNode.java
index b5771c2..f944c99 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNamespaceNode.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNamespaceNode.java
@@ -2,26 +2,30 @@
package org.zwobble.hobgoblin.compiler.ast.untyped;
-public record UntypedNamespaceNode(org.zwobble.hobgoblin.compiler.types.NamespaceName namespaceName, java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceStatementNode> body, org.zwobble.hobgoblin.compiler.sources.Source source) {
+public record UntypedNamespaceNode(org.zwobble.hobgoblin.compiler.types.NamespaceName namespaceName, java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode> imports, java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceStatementNode> body, org.zwobble.hobgoblin.compiler.sources.Source source) {
public static org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder arbitrary() {
- return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder(org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitraryNamespaceName(), java.util.List.of(), org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitrarySource());
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder(org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitraryNamespaceName(), java.util.List.of(), java.util.List.of(), org.zwobble.hobgoblin.compiler.ast.untyped.Native.arbitrarySource());
}
- public record Builder(org.zwobble.hobgoblin.compiler.types.NamespaceName namespaceName, java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceStatementNode> body, org.zwobble.hobgoblin.compiler.sources.Source source) {
+ public record Builder(org.zwobble.hobgoblin.compiler.types.NamespaceName namespaceName, java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode> imports, java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceStatementNode> body, org.zwobble.hobgoblin.compiler.sources.Source source) {
public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode build() {
- return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode(namespaceName, body, source);
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode(namespaceName, imports, body, source);
}
public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder withNamespaceName(org.zwobble.hobgoblin.compiler.types.NamespaceName namespaceName) {
- return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder(namespaceName, body, source);
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder(namespaceName, imports, body, source);
+ }
+
+ public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder withImports(java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode> imports) {
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder(namespaceName, imports, body, source);
}
public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder withBody(java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceStatementNode> body) {
- return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder(namespaceName, body, source);
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder(namespaceName, imports, body, source);
}
public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder withSource(org.zwobble.hobgoblin.compiler.sources.Source source) {
- return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder(namespaceName, body, source);
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder(namespaceName, imports, body, source);
}
// Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode.Builder body
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java
index 1bafe96..dc35fa0 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java
@@ -43,6 +43,7 @@ public class Parser {
return new UntypedNamespaceNode(
namespaceName,
+ List.of(),
body,
source
);
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedImportNodeMatcher.java b/src/test/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedImportNodeMatcher.java
new file mode 100644
index 0000000..9c8c183
--- /dev/null
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedImportNodeMatcher.java
@@ -0,0 +1,38 @@
+// Generated by hobgoblin.
+
+package org.zwobble.hobgoblin.compiler.ast.untyped;
+
+public class UntypedImportNodeMatcher implements org.zwobble.precisely.Matcher<java.lang.Object> {
+ public static org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNodeMatcher isUntypedImportNode() {
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNodeMatcher(java.util.List.of());
+ }
+
+ private final java.util.List<org.zwobble.precisely.Matcher<? super org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode>> submatchers;
+
+ private UntypedImportNodeMatcher(java.util.List<org.zwobble.precisely.Matcher<? super org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode>> submatchers) {
+ this.submatchers = submatchers;
+ }
+
+ public org.zwobble.precisely.MatchResult match(java.lang.Object actual) {
+ return this.toMatcher().match(actual);
+ }
+
+ public org.zwobble.precisely.TextTree describe() {
+ return this.toMatcher().describe();
+ }
+
+ private org.zwobble.precisely.Matcher<java.lang.Object> toMatcher() {
+ return org.zwobble.precisely.Matchers.instanceOf(org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode.class, this.submatchers);
+ }
+
+ public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNodeMatcher withImportedNames(org.zwobble.precisely.Matcher<? super java.util.List<String>> importedNames) {
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNodeMatcher(java.util.stream.Stream.concat(this.submatchers.stream(), java.util.stream.Stream.of(org.zwobble.precisely.Matchers.has("importedNames", org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode::importedNames, importedNames))).toList());
+ }
+
+ public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNodeMatcher withNamespaceName(org.zwobble.precisely.Matcher<? super org.zwobble.hobgoblin.compiler.types.NamespaceName> namespaceName) {
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNodeMatcher(java.util.stream.Stream.concat(this.submatchers.stream(), java.util.stream.Stream.of(org.zwobble.precisely.Matchers.has("namespaceName", org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode::namespaceName, namespaceName))).toList());
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNodeMatcher body
+ // Custom area end: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNodeMatcher body
+}
diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNamespaceNodeMatcher.java b/src/test/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNamespaceNodeMatcher.java
index 96a3b96..f511b45 100644
--- a/src/test/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNamespaceNodeMatcher.java
+++ b/src/test/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedNamespaceNodeMatcher.java
@@ -29,6 +29,10 @@ public class UntypedNamespaceNodeMatcher implements org.zwobble.precisely.Matche
return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNodeMatcher(java.util.stream.Stream.concat(this.submatchers.stream(), java.util.stream.Stream.of(org.zwobble.precisely.Matchers.has("namespaceName", org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode::namespaceName, namespaceName))).toList());
}
+ public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNodeMatcher withImports(org.zwobble.precisely.Matcher<? super java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode>> imports) {
+ return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNodeMatcher(java.util.stream.Stream.concat(this.submatchers.stream(), java.util.stream.Stream.of(org.zwobble.precisely.Matchers.has("imports", org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode::imports, imports))).toList());
+ }
+
public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNodeMatcher withBody(org.zwobble.precisely.Matcher<? super java.util.List<org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceStatementNode>> body) {
return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNodeMatcher(java.util.stream.Stream.concat(this.submatchers.stream(), java.util.stream.Stream.of(org.zwobble.precisely.Matchers.has("body", org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode::body, body))).toList());
}