From 5a0f2590a6b9c20b7ba47375ebff6ebc1eef5973 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 21 Jul 2023 17:09:24 +0100 Subject: Add immutable data elements to Patio --- .../compiler/patio/PatioSerializerTests.java | 20 +++++++++++++++++--- .../shedlang/compiler/patio/instructions/Patio.java | 20 ++++++++++++++------ 2 files changed, 31 insertions(+), 9 deletions(-) (limited to 'src/test/java') diff --git a/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java b/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java index c6e1f237..584df61f 100644 --- a/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java +++ b/src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java @@ -47,13 +47,27 @@ public class PatioSerializerTests { // == Compilation unit elements == @Test - public void canSerializeDataElement() { - var element = Patio.dataElement("x", PatioDataLayouts.scalar(PatioTypes.INT)); + public void canSerializeDataElementImmutable() { + var element = Patio.dataElementImmutable( + "x", + PatioDataValues.array(List.of(PatioDataValues.byte_(0x01), PatioDataValues.byte_(0x02))) + ); + + var string = PatioTesting.serializeCompilationUnitElement(element); + + assertThat(string, equalTo(""" + (data-immutable "x" (array ((byte 0x01) (byte 0x02))))""" + )); + } + + @Test + public void canSerializeDataElementMutable() { + var element = Patio.dataElementMutable("x", PatioDataLayouts.scalar(PatioTypes.INT)); var string = PatioTesting.serializeCompilationUnitElement(element); assertThat(string, equalTo(""" - (data "x" int)""" + (data-mutable "x" int)""" )); } diff --git a/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java b/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java index dd505326..5d788a89 100644 --- a/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java +++ b/src/test/java/org/shedlang/compiler/patio/instructions/Patio.java @@ -1,12 +1,10 @@ package org.shedlang.compiler.patio.instructions; -import org.shedlang.compiler.patio.ast.PatioCompilationUnit; -import org.shedlang.compiler.patio.ast.PatioCompilationUnitElement; -import org.shedlang.compiler.patio.ast.PatioDataElement; -import org.shedlang.compiler.patio.ast.PatioLocal; +import org.shedlang.compiler.patio.ast.*; import org.shedlang.compiler.patio.ast.instructions.*; import org.shedlang.compiler.patio.ast.operands.*; import org.shedlang.compiler.patio.ast.types.PatioDataLayout; +import org.shedlang.compiler.patio.ast.types.PatioDataValue; import org.shedlang.compiler.patio.ast.types.PatioType; import org.shedlang.compiler.sources.Sources; @@ -58,8 +56,18 @@ public class Patio { return new PatioCompilationUnit(elements, Sources.NULL); } - public static PatioDataElement dataElement(String name, PatioDataLayout layout) { - return new PatioDataElement(name, layout, Sources.NULL); + public static PatioDataElementImmutable dataElementImmutable( + String name, + PatioDataValue value + ) { + return new PatioDataElementImmutable(name, value, Sources.NULL); + } + + public static PatioDataElementMutable dataElementMutable( + String name, + PatioDataLayout layout + ) { + return new PatioDataElementMutable(name, layout, Sources.NULL); } public static PatioOperand dataPtr(String name) { -- cgit v1.2.3