From 6f52cdc6a2593094652d0ff018b4cde1276a1815 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 14 Jun 2026 10:45:49 +0100 Subject: Add import node --- .../compiler/ast/untyped/UntypedImportNode.java | 29 +++++++++++++++++ .../compiler/ast/untyped/UntypedNamespaceNode.java | 18 ++++++---- .../zwobble/hobgoblin/compiler/parser/Parser.java | 1 + .../ast/untyped/UntypedImportNodeMatcher.java | 38 ++++++++++++++++++++++ .../ast/untyped/UntypedNamespaceNodeMatcher.java | 4 +++ 5 files changed, 83 insertions(+), 7 deletions(-) create mode 100644 src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedImportNode.java create mode 100644 src/test/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedImportNodeMatcher.java (limited to 'src') 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 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 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 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 body, org.zwobble.hobgoblin.compiler.sources.Source source) { +public record UntypedNamespaceNode(org.zwobble.hobgoblin.compiler.types.NamespaceName namespaceName, java.util.List imports, java.util.List 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 body, org.zwobble.hobgoblin.compiler.sources.Source source) { + public record Builder(org.zwobble.hobgoblin.compiler.types.NamespaceName namespaceName, java.util.List imports, java.util.List 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 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 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 { + 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> submatchers; + + private UntypedImportNodeMatcher(java.util.List> 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 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> 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 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> 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> 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()); } -- cgit v1.2.3