summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-06-16 21:28:42 +0100
committerMichael Williamson <mike@zwobble.org>2026-06-16 21:28:42 +0100
commit365d53ad8a7bf21602e37970a34b2de116a794b2 (patch)
tree2f56743f17f754a53f972519a283ee6c4c6bda88 /src/main/java
parent124e712c8ca3738ec17db34151fb081efa36b214 (diff)
Type check imports
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java
index 4b718a2..77b46bc 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java
@@ -19,6 +19,17 @@ public class TypeChecker {
) {
var namespaceContext = context.enterNamespace(untyped.namespaceName());
+ for (var untypedImport : untyped.imports()) {
+ if (untypedImport.ancestorDepth().isPresent()) {
+ throw new UnsupportedOperationException("TODO: relative imports");
+ }
+
+ var importedNamespaceFields = context.namespaceFields(untypedImport.namespaceName());
+ for (var importedName : untypedImport.importedNames()) {
+ namespaceContext.define(importedName, importedNamespaceFields.get(importedName));
+ }
+ }
+
var fields = new ArrayList<Field>();
for (var untypedStatement : untyped.body()) {
var type = declareNamespaceStatement(untypedStatement, namespaceContext);