diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-03-21 13:01:34 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-03-21 13:01:34 +0000 |
| commit | f1aa04299d193826643bf6b3da37901b7de4b4b2 (patch) | |
| tree | d02e6386cd2cd8b5caf97610d2389968e6b4a7e4 /src/main/java | |
| parent | 99d37eb1f20e0c7fdcbc4bf42a25b94b33b5f793 (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.java | 22 |
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) { |
