diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-07-31 11:51:54 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-07-31 11:51:54 +0100 |
| commit | ae413b3defdde71acbbb59b455e5e15321df6893 (patch) | |
| tree | f7e6c78ed2fa839c1e659ab57a66fa309db92518 /src | |
| parent | 69ab5f074540a550393806de1a32d70d1c895121 (diff) | |
Add Int8 type
Diffstat (limited to 'src')
8 files changed, 27 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 6c3a494..e4622a0 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java @@ -50,6 +50,7 @@ public class HobgoblinCompiler { var typeCheckerContext = TypeCheckerGlobalContext.initial(); typeCheckerContext.addNativeType(NativeTypes.BOOL); + typeCheckerContext.addNativeType(NativeTypes.INT_8); typeCheckerContext.addNativeType(NativeTypes.INT_32); typeCheckerContext.addNativeType(NativeTypes.INT_64); typeCheckerContext.addNativeType(NativeTypes.STRING); 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 8f96709..58c8143 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 BOOL = SimpleNativeType.builtin("Bool"); + public static SimpleNativeType INT_8 = SimpleNativeType.builtin("Int8"); public static SimpleNativeType INT_32 = SimpleNativeType.builtin("Int32"); public static SimpleNativeType INT_64 = SimpleNativeType.builtin("Int64"); public static SimpleNativeType STRING = SimpleNativeType.builtin("String"); diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaGeneratorConfig.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaGeneratorConfig.java index 2b04294..fa4dd85 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaGeneratorConfig.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/java/JavaGeneratorConfig.java @@ -79,6 +79,7 @@ public record JavaGeneratorConfig( private static final Map<SimpleNativeType, JavaNativeTypeConfig> DEFAULT_NATIVE_TYPE_CONFIGS = Map.ofEntries( Map.entry(NativeTypes.BOOL, JavaNativeTypeConfig.primitive(JavaTypeRef.BOOLEAN, JavaTypeRef.BOOLEAN_BOXED, new JavaBooleanLiteral(false))), + Map.entry(NativeTypes.INT_8, JavaNativeTypeConfig.primitive(JavaTypeRef.INT, JavaTypeRef.BYTE_BOXED, new JavaIntegerLiteral(0))), Map.entry(NativeTypes.INT_32, JavaNativeTypeConfig.primitive(JavaTypeRef.INT, JavaTypeRef.INT_BOXED, new JavaIntegerLiteral(0))), Map.entry(NativeTypes.INT_64, JavaNativeTypeConfig.primitive(JavaTypeRef.LONG, JavaTypeRef.LONG_BOXED, new JavaIntegerLiteral(0))), Map.entry(NativeTypes.STRING, JavaNativeTypeConfig.of(JavaTypeRef.STRING, new JavaStringLiteral(""))), diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java index 1c7c962..7e3219a 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java @@ -172,6 +172,8 @@ public class JavaTransient0Generator implements Generator { List.of( generateEncodeBoolMethod(), generateDecodeBoolMethod(), + generateEncodeInt8Method(), + generateDecodeInt8Method(), generateEncodeInt32Method(), generateDecodeInt32Method(), generateEncodeInt64Method(), @@ -211,6 +213,14 @@ public class JavaTransient0Generator implements Generator { ); } + private JavaMethodDeclaration generateEncodeInt8Method() { + return generateEncodeIntMethod(NativeTypes.INT_8, 8); + } + + private JavaMethodDeclaration generateDecodeInt8Method() { + return generateDecodeIntMethod(NativeTypes.INT_8, 8); + } + private JavaMethodDeclaration generateEncodeInt32Method() { return generateEncodeIntMethod(NativeTypes.INT_32, 32); } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rust/RustGeneratorConfig.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rust/RustGeneratorConfig.java index 823189e..13721d4 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rust/RustGeneratorConfig.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rust/RustGeneratorConfig.java @@ -53,6 +53,7 @@ public record RustGeneratorConfig( private static final Map<SimpleNativeType, RustNativeTypeConfig> DEFAULT_NATIVE_TYPE_CONFIGS = Map.ofEntries( Map.entry(NativeTypes.BOOL, new RustNativeTypeConfig(RustTypes.BOOL)), + Map.entry(NativeTypes.INT_8, new RustNativeTypeConfig(RustTypes.I8)), Map.entry(NativeTypes.INT_32, new RustNativeTypeConfig(RustTypes.I32)), Map.entry(NativeTypes.INT_64, new RustNativeTypeConfig(RustTypes.I64)), Map.entry(NativeTypes.STRING, new RustNativeTypeConfig(RustTypes.STRING)), diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java index 1401b83..2af97a8 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java @@ -72,6 +72,8 @@ public class RustTransient0Generator implements Generator { List.of( generateEncodeBoolFunction(), generateDecodeBoolFunction(), + generateEncodeInt8Function(), + generateDecodeInt8Function(), generateEncodeInt32Function(), generateDecodeInt32Function(), generateEncodeInt64Function(), @@ -146,6 +148,14 @@ public class RustTransient0Generator implements Generator { ); } + private RustItem generateEncodeInt8Function() { + return generateEncodeIntFunction(NativeTypes.INT_8); + } + + private RustItem generateDecodeInt8Function() { + return generateDecodeIntFunction(NativeTypes.INT_8, 8); + } + private RustItem generateEncodeInt32Function() { return generateEncodeIntFunction(NativeTypes.INT_32); } 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 ef2686a..6f88a6c 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 @@ -52,6 +52,8 @@ public record JavaTypeRef( public static final JavaTypeRef BOOLEAN = primitive("boolean"); public static final JavaTypeRef BOOLEAN_BOXED = topLevel(JavaPackages.JAVA_LANG, JavaIdentifier.of("Boolean")); + public static final JavaTypeRef BYTE = primitive("byte"); + public static final JavaTypeRef BYTE_BOXED = topLevel(JavaPackages.JAVA_LANG, JavaIdentifier.of("Byte")); public static final JavaTypeRef INT = primitive("int"); public static final JavaTypeRef INT_BOXED = topLevel(JavaPackages.JAVA_LANG, JavaIdentifier.of("Integer")); public static final JavaTypeRef LONG = primitive("long"); diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustTypes.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustTypes.java index 3b55420..ec473b1 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustTypes.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustTypes.java @@ -13,6 +13,7 @@ public class RustTypes { } public static RustPath BOOL = RustPath.primitive("bool"); + public static RustPath I8 = RustPath.primitive("i8"); public static RustPath I32 = RustPath.primitive("i32"); public static RustPath I64 = RustPath.primitive("i64"); public static RustPath USIZE = RustPath.primitive("usize"); |
