From 7aa1f3174ff90d1f50fc6a010c6fa14e742984df Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 17 May 2026 10:31:52 +0100 Subject: Add string as native type --- src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java | 1 + src/main/java/org/zwobble/hobgoblin/compiler/builtins/NativeTypes.java | 1 + .../compiler/output/generators/javatypes/JavaTypesGenerator.java | 2 ++ .../zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeRef.java | 1 + 4 files changed, 5 insertions(+) (limited to 'src') 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 packageName, String name, List 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()); } -- cgit v1.2.3