summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-07-31 11:51:54 +0100
committerMichael Williamson <mike@zwobble.org>2026-07-31 11:51:54 +0100
commitae413b3defdde71acbbb59b455e5e15321df6893 (patch)
treef7e6c78ed2fa839c1e659ab57a66fa309db92518 /src/main/java
parent69ab5f074540a550393806de1a32d70d1c895121 (diff)
Add Int8 type
Diffstat (limited to 'src/main/java')
-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/java/JavaGeneratorConfig.java1
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/javatransient0/JavaTransient0Generator.java10
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rust/RustGeneratorConfig.java1
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java10
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/java/ast/JavaTypeRef.java2
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustTypes.java1
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");