aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-03-21 12:48:26 +0000
committerMichael Williamson <mike@zwobble.org>2026-03-21 12:48:26 +0000
commit5285c95b7d731d0cdf16a85aeedee28839feb9fc (patch)
tree3bfc2a042ee015e5cf2df99162eae4e699b4f122 /src
parentf0e1c8c32732ea37e508fae3ff5d5cf085042733 (diff)
Serialize Patio mutable data element definition
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/shedlang/compiler/patio/protobuf/PatioToProtobuf.java8
-rw-r--r--src/test/java/org/shedlang/compiler/patio/protobuf/PatioToProtobufTests.java16
2 files changed, 23 insertions, 1 deletions
diff --git a/src/main/java/org/shedlang/compiler/patio/protobuf/PatioToProtobuf.java b/src/main/java/org/shedlang/compiler/patio/protobuf/PatioToProtobuf.java
index 71e74967..454007a8 100644
--- a/src/main/java/org/shedlang/compiler/patio/protobuf/PatioToProtobuf.java
+++ b/src/main/java/org/shedlang/compiler/patio/protobuf/PatioToProtobuf.java
@@ -87,7 +87,12 @@ public class PatioToProtobuf {
);
case DATA_ELEMENT_MUTABLE_DEFINITION ->
- throw new UnsupportedOperationException("TODO");
+ new PatioDataElementMutableDefinition(
+ elementProtobuf.getDataElementMutableDefinition().getName(),
+ deserializeVisibility(elementProtobuf.getDataElementMutableDefinition().getVisibility()),
+ deserializeDataValue(elementProtobuf.getDataElementMutableDefinition().getInitialValue()),
+ deserializeSource(elementProtobuf.getDataElementMutableDefinition().getSource(), parentSource)
+ );
case VALUE_NOT_SET ->
throw new UnsupportedOperationException("TODO");
@@ -125,6 +130,7 @@ public class PatioToProtobuf {
builder.setSource(serializeSource(element.source(), parentSource));
builder.setName(element.name());
builder.setVisibility(serializeVisibility(element.visibility()));
+ builder.setInitialValue(serializeDataValue(element.initialValue()));
return builder.build();
}
diff --git a/src/test/java/org/shedlang/compiler/patio/protobuf/PatioToProtobufTests.java b/src/test/java/org/shedlang/compiler/patio/protobuf/PatioToProtobufTests.java
index 6aac1e0e..f993fb68 100644
--- a/src/test/java/org/shedlang/compiler/patio/protobuf/PatioToProtobufTests.java
+++ b/src/test/java/org/shedlang/compiler/patio/protobuf/PatioToProtobufTests.java
@@ -49,6 +49,22 @@ public class PatioToProtobufTests {
assertThat(deserializedElement, equalTo(element));
}
+ @Test
+ public void canSerializeDataElementMutableDefinition() {
+ var element = Patio.dataElementMutableDefinition(
+ "x",
+ PatioVisibility.PRIVATE,
+ PatioDataValues.int_(42)
+ );
+
+ var deserializedElement = PatioToProtobuf.deserializeCompilationUnitElement(
+ PatioToProtobuf.serializeCompilationUnitElement(element, Sources.NULL),
+ Sources.NULL
+ );
+
+ assertThat(deserializedElement, equalTo(element));
+ }
+
// == Data ptr values ==
@Test