From d4a22c167efa7707d75fb952e5e98ec95b0c7dfd Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 18 Jul 2026 09:59:06 +0100 Subject: Add dereference expression to Rust AST --- .../hobgoblin/compiler/output/lang/rust/RustWriter.java | 1 + .../compiler/output/lang/rust/ast/RustPrefixOperator.java | 3 ++- .../hobgoblin/compiler/output/lang/rust/RustWriterTests.java | 12 ++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) (limited to 'src') 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 0f026a2..8c449f9 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 @@ -435,6 +435,7 @@ public class RustWriter implements AutoCloseable { this.writer.write(switch (prefixExpression.operator()) { case BORROW -> "&"; case BORROW_MUTABLE -> "&mut "; + case DEREFERENCE -> "*"; }); this.writeExpression(prefixExpression.operand()); } diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustPrefixOperator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustPrefixOperator.java index f2c0aa8..a8282de 100644 --- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustPrefixOperator.java +++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustPrefixOperator.java @@ -7,7 +7,8 @@ package org.zwobble.hobgoblin.compiler.output.lang.rust.ast; public enum RustPrefixOperator { BORROW, - BORROW_MUTABLE + BORROW_MUTABLE, + DEREFERENCE // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPrefixOperator body // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustPrefixOperator body diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriterTests.java b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriterTests.java index 67f3f30..16c774f 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriterTests.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriterTests.java @@ -606,6 +606,18 @@ public class RustWriterTests { assertThat(string, equalTo("&mut x")); } + @Test + public void dereferenceExpression() throws IOException { + var rust = RustPrefixExpression.arbitrary() + .withOperator(RustPrefixOperator.DEREFERENCE) + .withOperand(RustPath.of("x")) + .build(); + + var string = write(writer -> writer.writeExpression(rust)); + + assertThat(string, equalTo("*x")); + } + // === Struct expressions === @Test -- cgit v1.2.3