diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-05-20 22:53:55 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-05-20 22:53:55 +0100 |
| commit | 2337ff8b31d264e86575682e45f78f568ed90785 (patch) | |
| tree | 36dd2cf6eaed5d1c93cc225e9f4b2894ea6dbf16 /src | |
| parent | 98200aa8a6f9811978d45eb0446fcfbb52021811 (diff) | |
Add namespace name to native types
Diffstat (limited to 'src')
5 files changed, 15 insertions, 11 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/builtins/NativeTypes.java b/src/main/java/org/zwobble/hobgoblin/compiler/builtins/NativeTypes.java index 98c28bf..e3a665b 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/builtins/NativeTypes.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/builtins/NativeTypes.java @@ -7,10 +7,10 @@ import org.zwobble.hobgoblin.compiler.types.TypeParam; import java.util.List; public class NativeTypes { - public static SimpleNativeType INT_32 = new SimpleNativeType("Int32"); - public static SimpleNativeType STRING = new SimpleNativeType("String"); + public static SimpleNativeType INT_32 = SimpleNativeType.builtin("Int32"); + public static SimpleNativeType STRING = SimpleNativeType.builtin("String"); - public static final SimpleNativeType LIST_INNER = new SimpleNativeType("List"); + public static final SimpleNativeType LIST_INNER = SimpleNativeType.builtin("List"); public static TypeConstructor<SimpleNativeType> LIST = new TypeConstructor<>( List.of(new TypeParam("T")), diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/types/SimpleNativeType.java b/src/main/java/org/zwobble/hobgoblin/compiler/types/SimpleNativeType.java index 0d73fc9..7dbd317 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/types/SimpleNativeType.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/types/SimpleNativeType.java @@ -1,6 +1,10 @@ package org.zwobble.hobgoblin.compiler.types; -public record SimpleNativeType(String name) implements Type, ConstructibleType { +public record SimpleNativeType(NamespaceName namespaceName, String name) implements Type, ConstructibleType { + public static SimpleNativeType builtin(String name) { + return new SimpleNativeType(NamespaceName.of(), name); + } + @Override public String describe() { return name; diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerConstructedTypeTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerConstructedTypeTests.java index 2fd1e91..1f3e5ff 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerConstructedTypeTests.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerConstructedTypeTests.java @@ -19,11 +19,11 @@ public class TypeCheckerConstructedTypeTests { ); var context = TypeCheckerContextArb.namespaceContext(); context.declare("List"); - var listType = new SimpleNativeType("List"); + var listType = SimpleNativeType.builtin("List"); var listTypeConstructor = new TypeConstructor<>(List.of(new TypeParam("T")), listType); context.define("List", new TypeLevelValueType(listTypeConstructor)); context.declare("Int32"); - var int32Type = new SimpleNativeType("Int32"); + var int32Type = SimpleNativeType.builtin("Int32"); context.define("Int32", new TypeLevelValueType(int32Type)); var typed = TypeChecker.typeCheckTypeLevelExpression(untyped, context); diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerStructDefinitionTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerStructDefinitionTests.java index 8967601..873f5ac 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerStructDefinitionTests.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerStructDefinitionTests.java @@ -47,8 +47,8 @@ public class TypeCheckerStructDefinitionTests { @Test public void fieldsAreTypeChecked() { - var int32Type = new SimpleNativeType("Int32"); - var int64Type = new SimpleNativeType("Int64"); + var int32Type = SimpleNativeType.builtin("Int32"); + var int64Type = SimpleNativeType.builtin("Int64"); var untyped = new UntypedStructDefinitionNode( "X", List.of( @@ -103,7 +103,7 @@ public class TypeCheckerStructDefinitionTests { @Test public void structCanUseTypeDefinedLater() { - var int32Type = new SimpleNativeType("Int32"); + var int32Type = SimpleNativeType.builtin("Int32"); var namespaceName = NamespaceName.of("a", "b"); var untyped = new UntypedNamespaceNode( namespaceName, diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerTypeLevelReferenceTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerTypeLevelReferenceTests.java index f0d3a81..ef90d3e 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerTypeLevelReferenceTests.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerTypeLevelReferenceTests.java @@ -44,7 +44,7 @@ public class TypeCheckerTypeLevelReferenceTests { var untyped = UntypedArb.typeLevelReference("X"); var context = TypeCheckerContextArb.namespaceContext(); context.declare("X"); - var nativeType = new SimpleNativeType("Int"); + var nativeType = SimpleNativeType.builtin("Int"); context.define("X", nativeType); var error = assertThrows( @@ -61,7 +61,7 @@ public class TypeCheckerTypeLevelReferenceTests { var untyped = UntypedArb.typeLevelReference("X"); var context = TypeCheckerContextArb.namespaceContext(); context.declare("X"); - var nativeType = new SimpleNativeType("Int"); + var nativeType = SimpleNativeType.builtin("Int"); context.define("X", new TypeLevelValueType(nativeType)); var typed = TypeChecker.typeCheckTypeLevelExpression(untyped, context); |
