summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGenerator.java18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGenerator.java
index 3832f35..c26b73d 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGenerator.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/typescript/TypescriptGenerator.java
@@ -1,5 +1,6 @@
package org.zwobble.hobgoblin.compiler.output.generators.typescript;
+import org.zwobble.hobgoblin.compiler.builtins.NativeTypes;
import org.zwobble.hobgoblin.compiler.output.lang.typescript.TypescriptWriter;
import org.zwobble.hobgoblin.compiler.output.lang.typescript.ast.*;
import org.zwobble.hobgoblin.compiler.types.*;
@@ -41,7 +42,7 @@ public class TypescriptGenerator {
}
public TypescriptExpression generateTypeExpression(Type value) {
- return switch (value) {
+ return switch (collapseType(value)) {
case ConstructedType constructedType -> {
yield new TypescriptConstructedType(
generateTypeExpression(constructedType.constructor().genericType()),
@@ -71,4 +72,19 @@ public class TypescriptGenerator {
}
};
}
+
+ public Type collapseType(Type type) {
+ if (!(type instanceof ConstructedNativeType constructedNativeType)) {
+ return type;
+ }
+
+ if (
+ !constructedNativeType.constructor().equals(NativeTypes.SHARED) &&
+ !constructedNativeType.constructor().equals(NativeTypes.BOX)
+ ) {
+ return type;
+ }
+
+ return constructedNativeType.args().getFirst();
+ }
}