diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-05-17 10:31:52 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-05-17 10:31:52 +0100 |
| commit | 7aa1f3174ff90d1f50fc6a010c6fa14e742984df (patch) | |
| tree | 2aa94ab6f7c9cd1adb5b26bfaa1b9af3d6b74e74 /src/main/java/org | |
| parent | 9acc7ef12df3f475bbf5f57c0e22d4be16639452 (diff) | |
Add string as native type
Diffstat (limited to 'src/main/java/org')
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()); } |
