aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-03-21 13:01:34 +0000
committerMichael Williamson <mike@zwobble.org>2026-03-21 13:01:34 +0000
commitf1aa04299d193826643bf6b3da37901b7de4b4b2 (patch)
treed02e6386cd2cd8b5caf97610d2389968e6b4a7e4 /src/main/java
parent99d37eb1f20e0c7fdcbc4bf42a25b94b33b5f793 (diff)
Serialize Patio exception type definition to protobuf
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/patio/protobuf/PatioToProtobuf.java22
1 files changed, 21 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 0f3ffcc0..9a6e8213 100644
--- a/src/main/java/org/shedlang/compiler/patio/protobuf/PatioToProtobuf.java
+++ b/src/main/java/org/shedlang/compiler/patio/protobuf/PatioToProtobuf.java
@@ -53,7 +53,9 @@ public class PatioToProtobuf {
);
}
case PatioExceptionTypeDefinition exceptionTypeDefinition -> {
- throw new UnsupportedOperationException("TODO");
+ builder.setExceptionTypeDefinition(
+ serializeExceptionTypeDefinition(exceptionTypeDefinition, parentSource)
+ );
}
case PatioFunctionDeclaration functionDeclaration -> {
throw new UnsupportedOperationException("TODO");
@@ -94,6 +96,13 @@ public class PatioToProtobuf {
deserializeSource(elementProtobuf.getDataElementMutableDefinition().getSource(), parentSource)
);
+ case EXCEPTION_TYPE_DEFINITION ->
+ new PatioExceptionTypeDefinition(
+ elementProtobuf.getExceptionTypeDefinition().getName(),
+ deserializeType(elementProtobuf.getExceptionTypeDefinition().getValueType()),
+ deserializeSource(elementProtobuf.getExceptionTypeDefinition().getSource(), parentSource)
+ );
+
case VALUE_NOT_SET ->
throw new UnsupportedOperationException("TODO");
};
@@ -134,6 +143,17 @@ public class PatioToProtobuf {
return builder.build();
}
+ private static PatioProtobuf.PatioExceptionTypeDefinition serializeExceptionTypeDefinition(
+ PatioExceptionTypeDefinition element,
+ Source parentSource
+ ) {
+ var builder = PatioProtobuf.PatioExceptionTypeDefinition.newBuilder();
+ builder.setSource(serializeSource(element.source(), parentSource));
+ builder.setName(element.name());
+ builder.setValueType(serializeType(element.valueType()));
+ return builder.build();
+ }
+
// == Data ptr values ==
public static PatioProtobuf.PatioDataPtrValue serializeDataPtrValue(PatioDataPtrValue value) {