From f1aa04299d193826643bf6b3da37901b7de4b4b2 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 21 Mar 2026 13:01:34 +0000 Subject: Serialize Patio exception type definition to protobuf --- .../compiler/patio/protobuf/PatioToProtobuf.java | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'src/main/java') 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) { -- cgit v1.2.3