summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java1
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/builtins/NativeTypes.java1
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java2
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeRef.java1
4 files changed, 5 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java b/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java
index f37bb8f..275051b 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java
@@ -38,6 +38,7 @@ public class HobgoblinCompiler {
var typeCheckerContext = TypeCheckerGlobalContext.initial();
typeCheckerContext.addNativeType(NativeTypes.INT_32);
+ typeCheckerContext.addNativeType(NativeTypes.STRING);
typeCheckerContext.addNativeTypeConstructor(NativeTypes.LIST);
var typedNamespaceNode = TypeChecker.typeCheckNamespace(untypedNamespaceNode, typeCheckerContext);
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 fd6f8cd..98c28bf 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/builtins/NativeTypes.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/builtins/NativeTypes.java
@@ -8,6 +8,7 @@ import java.util.List;
public class NativeTypes {
public static SimpleNativeType INT_32 = new SimpleNativeType("Int32");
+ public static SimpleNativeType STRING = new SimpleNativeType("String");
public static final SimpleNativeType LIST_INNER = new SimpleNativeType("List");
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java
index 1798ad3..ccf5a3e 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatypes/JavaTypesGenerator.java
@@ -148,6 +148,8 @@ public class JavaTypesGenerator implements Generator {
case SimpleNativeType simpleNativeType -> {
if (type.equals(NativeTypes.INT_32)) {
yield new JavaTypeRef(List.of(), "int", List.of());
+ } else if (type.equals(NativeTypes.STRING)) {
+ yield JavaTypeRef.STRING;
} else if (type.equals(NativeTypes.LIST_INNER)) {
yield new JavaTypeRef(List.of("java", "util"), "List", List.of());
} else {
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeRef.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeRef.java
index 9020791..857b494 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeRef.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeRef.java
@@ -5,5 +5,6 @@ import java.util.List;
public record JavaTypeRef(List<String> packageName, String name, List<JavaTypeRef> args) {
public static final JavaTypeRef INT = new JavaTypeRef(List.of(), "int", List.of());
public static final JavaTypeRef LONG = new JavaTypeRef(List.of(), "long", List.of());
+ public static final JavaTypeRef STRING = new JavaTypeRef(List.of(), "String", List.of());
public static final JavaTypeRef VOID = new JavaTypeRef(List.of(), "void", List.of());
}