aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-12-16 22:01:18 +0000
committerMichael Williamson <mike@zwobble.org>2023-12-16 22:01:18 +0000
commitd76118bdc14ba8d6ad69a788d24ca194a0c700bd (patch)
tree381370a4df60bd61f05903138956d409390509e7 /src/main/java
parentb5556d06e74b5c3245c092b2b81e0e0df8856c5d (diff)
Add PatioDataValueBool
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/codegen/LlvmPatioCodeGen.java3
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java3
-rw-r--r--src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java6
-rw-r--r--src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValue.java2
-rw-r--r--src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValueBool.java8
-rw-r--r--src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValues.java4
6 files changed, 25 insertions, 1 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/LlvmPatioCodeGen.java b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/LlvmPatioCodeGen.java
index da9c0c37..7fdad03e 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/LlvmPatioCodeGen.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/LlvmPatioCodeGen.java
@@ -1181,6 +1181,9 @@ public class LlvmPatioCodeGen {
yield new LlvmOperandArray(llvmType, llvmElements);
}
+ case PatioDataValueBool patioDataValueByte ->
+ new LlvmOperandInt(patioDataValueByte.value() ? 1 : 0);
+
case PatioDataValueByte patioDataValueByte ->
new LlvmOperandInt(patioDataValueByte.value());
diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java b/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java
index d53a4044..a0d69f70 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/WasmPatioCodeGen.java
@@ -606,6 +606,9 @@ public class WasmPatioCodeGen {
patioDataValueToBytes(element, bytes);
}
}
+ case PatioDataValueBool patioDataValueBool -> {
+ bytes.put(patioDataValueBool.value() ? (byte) 1 : (byte) 0);
+ }
case PatioDataValueByte patioDataValueByte -> {
bytes.put(patioDataValueByte.value());
}
diff --git a/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java b/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java
index 3e4fb96a..05703e24 100644
--- a/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java
+++ b/src/main/java/org/shedlang/compiler/patio/ast/PatioSerializer.java
@@ -509,6 +509,12 @@ public class PatioSerializer {
)
);
+ case PatioDataValueBool bool ->
+ treeList(
+ treeIdentifier("bool"),
+ treeIdentifier(bool.value() ? "true" : "false")
+ );
+
case PatioDataValueByte byte_ ->
treeList(
treeIdentifier("byte"),
diff --git a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValue.java b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValue.java
index b55dc07b..1181353e 100644
--- a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValue.java
+++ b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValue.java
@@ -1,5 +1,5 @@
package org.shedlang.compiler.patio.ast.types;
-public sealed interface PatioDataValue permits PatioDataValueArray, PatioDataValueByte, PatioDataValueInt, PatioDataValueStruct {
+public sealed interface PatioDataValue permits PatioDataValueArray, PatioDataValueBool, PatioDataValueByte, PatioDataValueInt, PatioDataValueStruct {
PatioDataLayout layout();
}
diff --git a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValueBool.java b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValueBool.java
new file mode 100644
index 00000000..57ca6851
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValueBool.java
@@ -0,0 +1,8 @@
+package org.shedlang.compiler.patio.ast.types;
+
+public record PatioDataValueBool(boolean value) implements PatioDataValue {
+ @Override
+ public PatioDataLayout layout() {
+ return PatioDataLayouts.BOOL;
+ }
+}
diff --git a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValues.java b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValues.java
index fa158b6b..c7b1a1d3 100644
--- a/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValues.java
+++ b/src/main/java/org/shedlang/compiler/patio/ast/types/PatioDataValues.java
@@ -12,6 +12,10 @@ public class PatioDataValues {
return new PatioDataValueArray(elementLayout, elements);
}
+ public static PatioDataValue bool(boolean value) {
+ return new PatioDataValueBool(value);
+ }
+
public static PatioDataValue byte_(int value) {
return new PatioDataValueByte((byte) value);
}