From c25a7bd63bc7c056c79f234e86fb4c30fd44f0bf Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 8 Mar 2025 13:03:11 +0000 Subject: Add PatioDataElementMutableDeclaration --- .../shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java | 5 +++++ .../java/org/shedlang/compiler/backends/wasm/PatioToWasm.java | 3 +++ .../shedlang/compiler/patio/PatioCompilationUnitElement.java | 2 +- .../compiler/patio/PatioDataElementMutableDeclaration.java | 11 +++++++++++ .../java/org/shedlang/compiler/patio/PatioSerializer.java | 7 +++++++ 5 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/shedlang/compiler/patio/PatioDataElementMutableDeclaration.java (limited to 'src/main/java') 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"), -- cgit v1.2.3