aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-10-22 13:37:51 +0100
committerMichael Williamson <mike@zwobble.org>2023-10-22 13:37:51 +0100
commit1248589625d7be5435441c1e48b6f5ce72933897 (patch)
tree851b35988cef31c58dcadf6e1ff1dd2eb3fc012b /src/main/java
parent9030b7977a785f6e92a3385a64084a5a4e11fa04 (diff)
Have UntypedImportNode implement UntypedVariableDeclarationNode
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/ast/untyped/UntypedImportNode.java11
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/DeclaredVariables.java6
-rw-r--r--src/main/java/org/shedlang/compiler/typechecker/TypeChecker.java2
3 files changed, 12 insertions, 7 deletions
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<DeclaredVariable> 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<TypedImportNode>();
for (var import_ : untyped.imports()) {
namespaceEnvironment = namespaceEnvironment.add(
- import_.variableName(),
+ import_.name(),
Variable.defined(new NamespaceType(import_.namespaceName()), VariableType.IMPORT),
import_.source()
);