aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2025-03-08 13:03:11 +0000
committerMichael Williamson <mike@zwobble.org>2025-03-08 13:03:11 +0000
commitc25a7bd63bc7c056c79f234e86fb4c30fd44f0bf (patch)
tree11a9c5b8ddf4e82431ad155b1425519b021b5a1f /src/main/java
parent332258d4c75b8da9f167d85a949afc0813925515 (diff)
Add PatioDataElementMutableDeclaration
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java5
-rw-r--r--src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java3
-rw-r--r--src/main/java/org/shedlang/compiler/patio/PatioCompilationUnitElement.java2
-rw-r--r--src/main/java/org/shedlang/compiler/patio/PatioDataElementMutableDeclaration.java11
-rw-r--r--src/main/java/org/shedlang/compiler/patio/PatioSerializer.java7
5 files changed, 27 insertions, 1 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java
index c592287c..4d838b34 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java
@@ -123,6 +123,8 @@ public class PatioToLlvm {
switch (patioCompilationUnitElement) {
case PatioDataElementImmutableDefinition patioDataElementImmutableDefinition -> {
}
+ case PatioDataElementMutableDeclaration patioDataElementMutableDeclaration -> {
+ }
case PatioDataElementMutableDefinition patioDataElementMutableDefinition -> {
}
case PatioFunctionDeclaration patioFunctionDeclaration -> {
@@ -167,6 +169,9 @@ public class PatioToLlvm {
case PatioDataElementImmutableDefinition patioDataElementImmutableDefinition ->
generateDataElementImmutableDefinition(patioDataElementImmutableDefinition, context);
+ case PatioDataElementMutableDeclaration patioDataElementMutableDeclaration ->
+ throw new UnsupportedOperationException("TODO");
+
case PatioDataElementMutableDefinition patioDataElementMutableDefinition ->
generateDataElementMutableDefinition(patioDataElementMutableDefinition, context);
diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
index 6cbe0491..fd4e7345 100644
--- a/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
+++ b/src/main/java/org/shedlang/compiler/backends/wasm/PatioToWasm.java
@@ -49,6 +49,9 @@ public class PatioToWasm {
WasmAlignment.ALIGN_32_BIT
).memory();
}
+ case PatioDataElementMutableDeclaration patioDataElementMutableDeclaration -> {
+ throw new UnsupportedOperationException("TODO");
+ }
case PatioDataElementMutableDefinition patioDataElementMutableDefinition -> {
wasmMemoryBuilder = wasmMemoryBuilder.add(
patioDataElementMutableDefinition.name(),
diff --git a/src/main/java/org/shedlang/compiler/patio/PatioCompilationUnitElement.java b/src/main/java/org/shedlang/compiler/patio/PatioCompilationUnitElement.java
index 7f757a00..b9e43d81 100644
--- a/src/main/java/org/shedlang/compiler/patio/PatioCompilationUnitElement.java
+++ b/src/main/java/org/shedlang/compiler/patio/PatioCompilationUnitElement.java
@@ -2,7 +2,7 @@ package org.shedlang.compiler.patio;
import org.shedlang.compiler.sources.Source;
-public sealed interface PatioCompilationUnitElement permits PatioDataElementImmutableDefinition, PatioDataElementMutableDefinition, PatioExceptionTypeDefinition, PatioFunctionDeclaration, PatioFunctionDefinition {
+public sealed interface PatioCompilationUnitElement permits PatioDataElementImmutableDefinition, PatioDataElementMutableDeclaration, PatioDataElementMutableDefinition, PatioExceptionTypeDefinition, PatioFunctionDeclaration, PatioFunctionDefinition {
String name();
Source source();
}
diff --git a/src/main/java/org/shedlang/compiler/patio/PatioDataElementMutableDeclaration.java b/src/main/java/org/shedlang/compiler/patio/PatioDataElementMutableDeclaration.java
new file mode 100644
index 00000000..0dc9ac13
--- /dev/null
+++ b/src/main/java/org/shedlang/compiler/patio/PatioDataElementMutableDeclaration.java
@@ -0,0 +1,11 @@
+package org.shedlang.compiler.patio;
+
+import org.shedlang.compiler.patio.types.PatioDataLayout;
+import org.shedlang.compiler.sources.Source;
+
+public record PatioDataElementMutableDeclaration(
+ String name,
+ PatioDataLayout layout,
+ Source source
+) implements PatioCompilationUnitElement {
+}
diff --git a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java
index a67e2df2..412dd932 100644
--- a/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java
+++ b/src/main/java/org/shedlang/compiler/patio/PatioSerializer.java
@@ -103,6 +103,13 @@ public class PatioSerializer {
dataValueToTree(dataElementImmutableDefinition.value())
);
+ case PatioDataElementMutableDeclaration dataElementMutableDeclaration ->
+ treeList(
+ treeIdentifier("data-mutable-decl"),
+ treeString(dataElementMutableDeclaration.name()),
+ dataLayoutToTree(dataElementMutableDeclaration.layout())
+ );
+
case PatioDataElementMutableDefinition dataElementMutableDefinition ->
treeList(
treeIdentifier("data-mutable"),