diff options
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); + } +} |
