diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-04-25 10:14:28 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-04-25 10:14:28 +0100 |
| commit | 7e0999200b57bfd01b04a8dd96cd8eed997ad2e2 (patch) | |
| tree | 8edc2bedbfe6369f93fcb2a5dad9fb64307f5d3d /src/main/java/org | |
| parent | b55bfe747a957a652cfd86bcadd918cf20dd51fd (diff) | |
Add stubbed function for type checking namespace
Diffstat (limited to 'src/main/java/org')
4 files changed, 26 insertions, 3 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java b/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java index 9d95dae..7945944 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java @@ -1,6 +1,8 @@ package org.zwobble.hobgoblin.compiler; import org.zwobble.hobgoblin.compiler.parser.Parser; +import org.zwobble.hobgoblin.compiler.typechecker.TypeChecker; +import org.zwobble.hobgoblin.compiler.typechecker.TypeCheckerContext; import org.zwobble.hobgoblin.compiler.types.NamespaceName; import org.zwobble.sourcetext.SourceText; @@ -22,7 +24,10 @@ public class HobgoblinCompiler { var namespaceName = NamespaceName.of(); var sourceContents = Files.readString(sourceFile.toPath(), StandardCharsets.UTF_8); var sourceText = SourceText.fromString(sourceFile.toPath().toString(), sourceContents); - var namespace = Parser.parseNamespace(sourceText, namespaceName); + var untypedNamespaceNode = Parser.parseNamespace(sourceText, namespaceName); + + var typeCheckerContext = TypeCheckerContext.initial(); + var typedNamespaceNode = TypeChecker.typeCheckNamespace(untypedNamespaceNode, typeCheckerContext); } } } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/ast/typed/TypedNamespaceNode.java b/src/main/java/org/zwobble/hobgoblin/compiler/ast/typed/TypedNamespaceNode.java index 0f76f14..805498f 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/ast/typed/TypedNamespaceNode.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/ast/typed/TypedNamespaceNode.java @@ -1,6 +1,5 @@ package org.zwobble.hobgoblin.compiler.ast.typed; -import org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceStatementNode; import org.zwobble.hobgoblin.compiler.sources.Source; import org.zwobble.hobgoblin.compiler.types.NamespaceName; 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 56d4645..cfce407 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java @@ -1,18 +1,33 @@ package org.zwobble.hobgoblin.compiler.typechecker; +import org.zwobble.hobgoblin.compiler.ast.typed.TypedNamespaceNode; import org.zwobble.hobgoblin.compiler.ast.typed.TypedTypeLevelExpressionNode; import org.zwobble.hobgoblin.compiler.ast.typed.TypedTypeLevelReferenceNode; +import org.zwobble.hobgoblin.compiler.ast.untyped.UntypedNamespaceNode; import org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelExpressionNode; import org.zwobble.hobgoblin.compiler.ast.untyped.UntypedTypeLevelReferenceNode; import org.zwobble.hobgoblin.compiler.types.TypeLevelValue; import org.zwobble.hobgoblin.compiler.types.TypeLevelValueType; import org.zwobble.hobgoblin.compiler.types.TypeSet; +import java.util.List; + public class TypeChecker { private TypeChecker() { } - public static TypedTypeLevelExpressionNode<? extends TypeLevelValue> typeCheckTypeLevelExpression( + public static TypedNamespaceNode typeCheckNamespace( + UntypedNamespaceNode untyped, + TypeCheckerContext context + ) { + return new TypedNamespaceNode( + untyped.namespaceName(), + List.of(), + untyped.source() + ); + } + + static TypedTypeLevelExpressionNode<? extends TypeLevelValue> typeCheckTypeLevelExpression( UntypedTypeLevelExpressionNode untyped, TypeCheckerContext context ) { diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerContext.java b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerContext.java index e861c30..b80246a 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerContext.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerContext.java @@ -9,6 +9,10 @@ import java.util.Optional; public class TypeCheckerContext { private final Map<String, Variable> variables = new HashMap<>(); + public static TypeCheckerContext initial() { + return new TypeCheckerContext(); + } + public void declare(String name) { // TODO: Check variable is not already declared. this.variables.put(name, new Variable.Declared()); |
