summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-08-29 22:40:42 +0100
committerMichael Williamson <mike@zwobble.org>2026-08-29 22:40:42 +0100
commitc315bc3a20ec6777c42b62ac52086464a662d255 (patch)
treee9b9dfcaa5f8e6f50d2b533c05329e2fa61c3122
parentc70c89053b6ff2888607fec04144f1a06e8c2e63 (diff)
Add Float64
-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/rust/RustGeneratorConfig.java1
-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
6 files changed, 7 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 eb78e2a..0bd9192 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/HobgoblinCompiler.java
@@ -44,6 +44,7 @@ public class HobgoblinCompiler {
var typeCheckerContext = TypeCheckerGlobalContext.initial();
typeCheckerContext.addNativeType(NativeTypes.BOOL);
+ typeCheckerContext.addNativeType(NativeTypes.FLOAT_64);
typeCheckerContext.addNativeType(NativeTypes.INT_8);
typeCheckerContext.addNativeType(NativeTypes.INT_32);
typeCheckerContext.addNativeType(NativeTypes.INT_64);
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 36748a7..21b27fd 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/builtins/NativeTypes.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/builtins/NativeTypes.java
@@ -6,6 +6,7 @@ import java.util.List;
public class NativeTypes {
public static SimpleNativeType BOOL = SimpleNativeType.builtin("Bool");
+ public static SimpleNativeType FLOAT_64 = SimpleNativeType.builtin("Float64");
public static SimpleNativeType INT_8 = SimpleNativeType.builtin("Int8");
public static SimpleNativeType INT_32 = SimpleNativeType.builtin("Int32");
public static SimpleNativeType INT_64 = SimpleNativeType.builtin("Int64");
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 4a2d6f1..032f474 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
@@ -78,6 +78,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.FLOAT_64, JavaNativeTypeConfig.primitive(JavaTypeRef.DOUBLE, JavaTypeRef.DOUBLE_BOXED, new JavaIntegerLiteral(0))),
Map.entry(
NativeTypes.INT_8,
JavaNativeTypeConfig.primitive(
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 4c64601..7ba66d1 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.FLOAT_64, new RustNativeTypeConfig(RustTypes.F64)),
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)),
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 00a6c1d..779020f 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
@@ -76,6 +76,8 @@ public record JavaTypeRef(
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 DOUBLE = primitive("double");
+ public static final JavaTypeRef DOUBLE_BOXED = topLevel(JavaPackages.JAVA_LANG, JavaIdentifier.of("Double"));
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 b3d65d4..e7cd5ac 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 F64 = RustPath.primitive("f64");
public static RustPath I8 = RustPath.primitive("i8");
public static RustPath I32 = RustPath.primitive("i32");
public static RustPath I64 = RustPath.primitive("i64");