summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-05-20 22:53:55 +0100
committerMichael Williamson <mike@zwobble.org>2026-05-20 22:53:55 +0100
commit2337ff8b31d264e86575682e45f78f568ed90785 (patch)
tree36dd2cf6eaed5d1c93cc225e9f4b2894ea6dbf16 /src
parent98200aa8a6f9811978d45eb0446fcfbb52021811 (diff)
Add namespace name to native types
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/builtins/NativeTypes.java6
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/types/SimpleNativeType.java6
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerConstructedTypeTests.java4
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerStructDefinitionTests.java6
-rw-r--r--src/test/java/org/zwobble/hobgoblin/compiler/typechecker/TypeCheckerTypeLevelReferenceTests.java4
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);