summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/builtins/NativeTypes.java8
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java2
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/types/TypeParam.java3
3 files changed, 6 insertions, 7 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 f4e499e..36748a7 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/builtins/NativeTypes.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/builtins/NativeTypes.java
@@ -14,7 +14,7 @@ public class NativeTypes {
public static final SimpleNativeType BOX_INNER = SimpleNativeType.builtin("Box");
public static TypeConstructor<SimpleNativeType> BOX = Types.constructor(
- List.of(new TypeParam("T")),
+ List.of(new TypeParam(BOX_INNER, "T")),
BOX_INNER
);
@@ -25,7 +25,7 @@ public class NativeTypes {
public static final SimpleNativeType LIST_INNER = SimpleNativeType.builtin("List");
public static TypeConstructor<SimpleNativeType> LIST = Types.constructor(
- List.of(new TypeParam("T")),
+ List.of(new TypeParam(LIST_INNER, "T")),
LIST_INNER
);
@@ -36,7 +36,7 @@ public class NativeTypes {
public static final SimpleNativeType OPTION_INNER = SimpleNativeType.builtin("Option");
public static TypeConstructor<SimpleNativeType> OPTION = Types.constructor(
- List.of(new TypeParam("T")),
+ List.of(new TypeParam(OPTION_INNER, "T")),
OPTION_INNER
);
@@ -47,7 +47,7 @@ public class NativeTypes {
public static final SimpleNativeType SHARED_INNER = SimpleNativeType.builtin("Shared");
public static TypeConstructor<SimpleNativeType> SHARED = Types.constructor(
- List.of(new TypeParam("T")),
+ List.of(new TypeParam(SHARED_INNER, "T")),
SHARED_INNER
);
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 90b95b2..feffe8a 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/typechecker/TypeChecker.java
@@ -170,7 +170,7 @@ public class TypeChecker {
? new TypeOrConstructor.Type<>(nativeType)
: new TypeOrConstructor.Constructor<>(new NativeTypeConstructor(
untyped.typeParams().get().stream()
- .map(typeParam -> new TypeParam(typeParam.name()))
+ .map(typeParam -> new TypeParam(nativeType, typeParam.name()))
.toList(),
nativeType
));
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/types/TypeParam.java b/src/main/java/org/zwobble/hobgoblin/compiler/types/TypeParam.java
index 479cd3d..f9b31d9 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/types/TypeParam.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/types/TypeParam.java
@@ -1,7 +1,6 @@
package org.zwobble.hobgoblin.compiler.types;
-public record TypeParam(String name) implements Type {
- // TODO: scope?
+public record TypeParam(SimpleType scope, String name) implements Type {
@Override
public String describe() {
return name;