From 1248589625d7be5435441c1e48b6f5ce72933897 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 22 Oct 2023 13:37:51 +0100 Subject: Have UntypedImportNode implement UntypedVariableDeclarationNode --- .../org/shedlang/compiler/ast/untyped/UntypedImportNode.java | 11 +++++++++-- .../org/shedlang/compiler/typechecker/DeclaredVariables.java | 6 ++---- .../java/org/shedlang/compiler/typechecker/TypeChecker.java | 2 +- 3 files changed, 12 insertions(+), 7 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/ast/untyped/UntypedImportNode.java b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedImportNode.java index 8c8103a7..77e07922 100644 --- a/src/main/java/org/shedlang/compiler/ast/untyped/UntypedImportNode.java +++ b/src/main/java/org/shedlang/compiler/ast/untyped/UntypedImportNode.java @@ -2,9 +2,16 @@ package org.shedlang.compiler.ast.untyped; import org.shedlang.compiler.sources.Source; import org.shedlang.compiler.types.NamespaceName; +import org.shedlang.compiler.types.Visibility; -public record UntypedImportNode(NamespaceName namespaceName, Source source) implements UntypedNode { - public String variableName() { +public record UntypedImportNode(NamespaceName namespaceName, Source source) implements UntypedNode, UntypedVariableDeclarationNode { + @Override + public String name() { return namespaceName.parts().getLast(); } + + @Override + public Visibility visibility() { + return Visibility.PRIVATE; + } } diff --git a/src/main/java/org/shedlang/compiler/typechecker/DeclaredVariables.java b/src/main/java/org/shedlang/compiler/typechecker/DeclaredVariables.java index 4fc0d8fd..6d1c80eb 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/DeclaredVariables.java +++ b/src/main/java/org/shedlang/compiler/typechecker/DeclaredVariables.java @@ -51,11 +51,9 @@ class DeclaredVariables { UntypedImportNode import_, PVector variables ) { - return variables.plus(new DeclaredVariable( - import_.variableName(), + return variables.plus(DeclaredVariable.fromNode( VariableType.IMPORT, - Visibility.PRIVATE, - import_.source() + import_ )); } diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java index f4033702..b8a487e4 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java @@ -689,7 +689,7 @@ public class TypeChecker { var typedImportNodes = new ArrayList(); for (var import_ : untyped.imports()) { namespaceEnvironment = namespaceEnvironment.add( - import_.variableName(), + import_.name(), Variable.defined(new NamespaceType(import_.namespaceName()), VariableType.IMPORT), import_.source() ); -- cgit v1.2.3