From edcaf92f6189a9f1af4978606d4948b56aca07b1 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 14 Jul 2026 22:35:53 +0100 Subject: Support mutable lets in Rust AST --- .../compiler/output/lang/rust/RustWriterTests.java | 15 ++++++++++++++- .../output/lang/rust/ast/RustLetStatementMatcher.java | 6 ++++++ 2 files changed, 20 insertions(+), 1 deletion(-) (limited to 'src/test') 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 e4cee1e..c17d96f 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 @@ -367,16 +367,29 @@ public class RustWriterTests { // === Let statements === @Test - public void letStatementDeclaringSingleVariable() throws IOException { + public void letStatementDeclaringSingleImmutableVariable() throws IOException { var rust = RustLetStatement.arbitrary() .withVariableName(RustIdentifier.of("x")) + .withMutable(false) .withValue(RustBoolLiteral.arbitrary().withValue(true).build()) .build(); var string = write(writer -> writer.writeStatement(rust)); assertThat(string, equalTo("let x = true;")); + } + + @Test + public void letStatementDeclaringSingleMutableVariable() throws IOException { + var rust = RustLetStatement.arbitrary() + .withVariableName(RustIdentifier.of("x")) + .withMutable(true) + .withValue(RustBoolLiteral.arbitrary().withValue(true).build()) + .build(); + + var string = write(writer -> writer.writeStatement(rust)); + assertThat(string, equalTo("let mut x = true;")); } // == Expressions == diff --git a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustLetStatementMatcher.java b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustLetStatementMatcher.java index c71dd98..b48d485 100644 --- a/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustLetStatementMatcher.java +++ b/src/test/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustLetStatementMatcher.java @@ -34,6 +34,12 @@ public class RustLetStatementMatcher implements org.zwobble.precisely.Matcher mutable) { + var submatchers = new java.util.ArrayList>(this.submatchers); + submatchers.add(org.zwobble.precisely.Matchers.has("mutable", org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustLetStatement::mutable, mutable)); + return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustLetStatementMatcher(submatchers); + } + public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustLetStatementMatcher withValue(org.zwobble.precisely.Matcher value) { var submatchers = new java.util.ArrayList>(this.submatchers); submatchers.add(org.zwobble.precisely.Matchers.has("value", org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustLetStatement::value, value)); -- cgit v1.2.3