aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-07-21 17:09:24 +0100
committerMichael Williamson <mike@zwobble.org>2023-07-21 17:09:24 +0100
commit5a0f2590a6b9c20b7ba47375ebff6ebc1eef5973 (patch)
tree1c5331ddba980abbc9acd0cff1d7ea67046766ed /src/test/java/org
parent55df7731a405508545dc50e6bfdc548faaa54a30 (diff)
Add immutable data elements to Patio
Diffstat (limited to 'src/test/java/org')
-rw-r--r--src/test/java/org/shedlang/compiler/patio/PatioSerializerTests.java20
-rw-r--r--src/test/java/org/shedlang/compiler/patio/instructions/Patio.java20
2 files changed, 31 insertions, 9 deletions
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) {