diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-06-19 17:20:07 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-06-19 17:20:16 +0100 |
| commit | 08d1cc0d7a12e5595d34933b982f73dc522232ff (patch) | |
| tree | eedb57d6247f404139bfb9b0e9ae1728370bf594 /src/main/java/org | |
| parent | 470aefa3f110ac987c4a8c4e77977db8dfc2ea3d (diff) | |
Throw better error on unknown namespace
Diffstat (limited to 'src/main/java/org')
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java | 5 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/typechecker/UnknownNamespaceError.java | 11 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java b/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java index a8d8dee..9dba876 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java @@ -7,6 +7,7 @@ import org.zwobble.hobgoblin.compiler.config.ProjectConfig; import org.zwobble.hobgoblin.compiler.parser.Parser; import org.zwobble.hobgoblin.compiler.typechecker.TypeChecker; import org.zwobble.hobgoblin.compiler.typechecker.TypeCheckerGlobalContext; +import org.zwobble.hobgoblin.compiler.typechecker.UnknownNamespaceError; import org.zwobble.hobgoblin.compiler.types.NamespaceName; import org.zwobble.sourcetext.SourceText; @@ -87,8 +88,8 @@ public class HobgoblinCompiler { ); if (!handledNamespaceNames.contains(importedNamespaceName)) { unhandledDependencies.add( - // TODO: better error - Optional.ofNullable(namespaceNodesByName.get(importedNamespaceName)).orElseThrow() + Optional.ofNullable(namespaceNodesByName.get(importedNamespaceName)) + .orElseThrow(() -> new UnknownNamespaceError(importedNamespaceName, importNode.source())) ); } } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/UnknownNamespaceError.java b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/UnknownNamespaceError.java new file mode 100644 index 0000000..fb06f3b --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/UnknownNamespaceError.java @@ -0,0 +1,11 @@ +package org.zwobble.hobgoblin.compiler.typechecker; + +import org.zwobble.hobgoblin.compiler.errors.SourceError; +import org.zwobble.hobgoblin.compiler.sources.Source; +import org.zwobble.hobgoblin.compiler.types.NamespaceName; + +public class UnknownNamespaceError extends SourceError { + public UnknownNamespaceError(NamespaceName namespaceName, Source source) { + super("Unknown namespace: " + namespaceName, source); + } +} |
