diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-07-17 17:13:34 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-07-17 17:13:34 +0100 |
| commit | 001a701103c98581b96e41653d87156de667774d (patch) | |
| tree | 0acbac878221842ae14957002feac1ea7373ea9d /src/main/java | |
| parent | a94ee520f3df79f6576f50205feb0355386192aa (diff) | |
Add try propagation expression to Rust AST
Diffstat (limited to 'src/main/java')
3 files changed, 44 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriter.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriter.java index b27a755..4acbb0e 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriter.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriter.java @@ -354,6 +354,10 @@ public class RustWriter implements AutoCloseable { case RustStructExpression structExpression -> { this.writeStructExpression(structExpression); } + + case RustTryPropagationExpression tryPropagationExpression -> { + this.writeTryPropagationExpression(tryPropagationExpression); + } } } @@ -451,6 +455,13 @@ public class RustWriter implements AutoCloseable { this.writer.write("}"); } + private void writeTryPropagationExpression( + RustTryPropagationExpression tryPropagationExpression + ) throws IOException { + this.writeExpression(tryPropagationExpression.operand()); + this.writer.write("?"); + } + // == Types == void writeType(RustType type) throws IOException { diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustExpression.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustExpression.java index 124f395..bd6d86b 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustExpression.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustExpression.java @@ -5,7 +5,7 @@ package org.zwobble.hobgoblin.compiler.output.lang.rust.ast; // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression imports // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression imports -public sealed interface RustExpression permits org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustArrayRepeatExpression, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustBlockExpression, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustBoolLiteral, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustCallExpression, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIfExpression, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIntegerLiteral, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPath, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPrefixExpression, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustStructExpression { +public sealed interface RustExpression permits org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustArrayRepeatExpression, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustBlockExpression, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustBoolLiteral, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustCallExpression, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIfExpression, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIntegerLiteral, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPath, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPrefixExpression, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustStructExpression, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTryPropagationExpression { public interface Builder { public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression build(); diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTryPropagationExpression.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTryPropagationExpression.java new file mode 100644 index 0000000..5a2f4b5 --- /dev/null +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTryPropagationExpression.java @@ -0,0 +1,32 @@ +// Generated by hobgoblin. + +package org.zwobble.hobgoblin.compiler.output.lang.rust.ast; + +// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTryPropagationExpression imports +// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTryPropagationExpression imports + +public record RustTryPropagationExpression(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression operand) implements org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression { + public static org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTryPropagationExpression.Builder arbitrary() { + return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTryPropagationExpression.Builder(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustBlockExpression.arbitrary().build()); + } + + public record Builder(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression operand) implements org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression.Builder { + public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTryPropagationExpression build() { + return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTryPropagationExpression(operand); + } + + public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTryPropagationExpression.Builder withOperand(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression operand) { + return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTryPropagationExpression.Builder(operand); + } + + public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTryPropagationExpression.Builder withOperand(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression.Builder operand) { + return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTryPropagationExpression.Builder(operand.build()); + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTryPropagationExpression.Builder body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTryPropagationExpression.Builder body + } + + // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTryPropagationExpression body + // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTryPropagationExpression body +} |
