From 470aefa3f110ac987c4a8c4e77977db8dfc2ea3d Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 19 Jun 2026 17:19:38 +0100 Subject: Add source to UntypedImportNode --- .../compiler/ast/untyped/UntypedImportNode.java | 18 +++++++++++------- .../org/zwobble/hobgoblin/compiler/parser/Parser.java | 7 ++++++- 2 files changed, 17 insertions(+), 8 deletions(-) (limited to 'src/main') 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 index 1d312df..07069dd 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedImportNode.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/untyped/UntypedImportNode.java @@ -2,26 +2,30 @@ package org.zwobble.hobgoblin.compiler.ast.untyped; -public record UntypedImportNode(java.util.List importedNames, java.util.Optional ancestorDepth, org.zwobble.hobgoblin.compiler.types.NamespaceName namespaceName) { +public record UntypedImportNode(java.util.List importedNames, java.util.Optional ancestorDepth, org.zwobble.hobgoblin.compiler.types.NamespaceName namespaceName, org.zwobble.hobgoblin.compiler.sources.Source source) { 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(), java.util.Optional.empty(), org.zwobble.hobgoblin.compiler.types.Native.arbitraryNamespaceName()); + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode.Builder(java.util.List.of(), java.util.Optional.empty(), org.zwobble.hobgoblin.compiler.types.Native.arbitraryNamespaceName(), org.zwobble.hobgoblin.compiler.sources.Native.arbitrarySource()); } - public record Builder(java.util.List importedNames, java.util.Optional ancestorDepth, org.zwobble.hobgoblin.compiler.types.NamespaceName namespaceName) { + public record Builder(java.util.List importedNames, java.util.Optional ancestorDepth, org.zwobble.hobgoblin.compiler.types.NamespaceName namespaceName, org.zwobble.hobgoblin.compiler.sources.Source source) { public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode build() { - return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode(importedNames, ancestorDepth, namespaceName); + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode(importedNames, ancestorDepth, namespaceName, source); } 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, ancestorDepth, namespaceName); + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode.Builder(importedNames, ancestorDepth, namespaceName, source); } public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode.Builder withAncestorDepth(java.util.Optional ancestorDepth) { - return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode.Builder(importedNames, ancestorDepth, namespaceName); + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode.Builder(importedNames, ancestorDepth, namespaceName, source); } 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, ancestorDepth, namespaceName); + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode.Builder(importedNames, ancestorDepth, namespaceName, source); + } + + public org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode.Builder withSource(org.zwobble.hobgoblin.compiler.sources.Source source) { + return new org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode.Builder(importedNames, ancestorDepth, namespaceName, source); } // Custom area start: org.zwobble.hobgoblin.compiler.ast.untyped.UntypedImportNode.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 72bd60e..f3cb123 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/parser/Parser.java @@ -57,6 +57,8 @@ public class Parser { } private static UntypedImportNode parseImport(TokenIterator tokens) { + var start = tokens.startPosition(); + tokens.skip(TokenType.KEYWORD_IMPORT); tokens.skip(TokenType.SYMBOL_BRACE_OPEN); @@ -90,7 +92,10 @@ public class Parser { tokens.skip(TokenType.SYMBOL_SEMICOLON); - return new UntypedImportNode(importedNames, ancestorDepth, namespaceName); + var end = tokens.endPosition(); + var source = createSource(start, end); + + return new UntypedImportNode(importedNames, ancestorDepth, namespaceName, source); } static UntypedNamespaceStatementNode parseNamespaceStatement( -- cgit v1.2.3