diff options
Diffstat (limited to 'src/main/java')
3 files changed, 17 insertions, 0 deletions
diff --git a/src/main/java/org/shedlang/compiler/ast/typed/TypedImportNode.java b/src/main/java/org/shedlang/compiler/ast/typed/TypedImportNode.java new file mode 100644 index 00000000..e9932300 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/ast/typed/TypedImportNode.java @@ -0,0 +1,10 @@ +package org.shedlang.compiler.ast.typed; + +import org.shedlang.compiler.sources.Source; +import org.shedlang.compiler.types.NamespaceName; + +public record TypedImportNode( + NamespaceName namespaceName, + Source source +) implements TypedNode { +} diff --git a/src/main/java/org/shedlang/compiler/ast/typed/TypedNamespaceNode.java b/src/main/java/org/shedlang/compiler/ast/typed/TypedNamespaceNode.java index 628cffd2..26da9e61 100644 --- a/src/main/java/org/shedlang/compiler/ast/typed/TypedNamespaceNode.java +++ b/src/main/java/org/shedlang/compiler/ast/typed/TypedNamespaceNode.java @@ -7,6 +7,7 @@ import java.util.List; public record TypedNamespaceNode( NamespaceName namespaceName, + List<TypedImportNode> imports, List<TypedNamespaceStatementNode> body, List<String> boundVariableNames, List<String> fieldNames, diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java index cc68861a..f2844b33 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java @@ -686,12 +686,17 @@ public class TypeChecker { ) { var namespaceEnvironment = EnvironmentBuilder.EMPTY; + var typedImportNodes = new ArrayList<TypedImportNode>(); for (var import_ : untyped.imports()) { namespaceEnvironment = namespaceEnvironment.add( import_.namespaceName().parts().getLast(), Variable.defined(new NamespaceType(import_.namespaceName()), VariableType.IMPORT), import_.source() ); + typedImportNodes.add(new TypedImportNode( + import_.namespaceName(), + import_.source() + )); } for (var statement : untyped.body()) { @@ -805,6 +810,7 @@ public class TypeChecker { var typed = new TypedNamespaceNode( untyped.namespaceName(), + typedImportNodes, typedBody, declaredVariables.stream() .map(boundVariable -> boundVariable.name()) |
