summaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriter.java15
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustExpressionStatement.java32
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustStatement.java18
3 files changed, 65 insertions, 0 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 299a8b5..23643a6 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
@@ -202,6 +202,21 @@ public class RustWriter implements AutoCloseable {
this.writer.write("}");
}
+ // == Statements ==
+
+ void writeStatement(RustStatement statement) throws IOException {
+ switch (statement) {
+ case RustExpressionStatement expressionStatement -> {
+ this.writeExpressionStatement(expressionStatement);
+ }
+ }
+ }
+
+ private void writeExpressionStatement(RustExpressionStatement expressionStatement) throws IOException {
+ this.writeExpression(expressionStatement.expression());
+ this.writer.write(";");
+ }
+
// == Expressions ==
void writeExpression(RustExpression expression) throws IOException {
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustExpressionStatement.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustExpressionStatement.java
new file mode 100644
index 0000000..3083b79
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustExpressionStatement.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.RustExpressionStatement imports
+// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpressionStatement imports
+
+public record RustExpressionStatement(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression expression) implements org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustStatement {
+ public static org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpressionStatement.Builder arbitrary() {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpressionStatement.Builder(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustBoolLiteral.arbitrary().build());
+ }
+
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression expression) implements org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustStatement.Builder {
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpressionStatement build() {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpressionStatement(expression);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpressionStatement.Builder withExpression(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression expression) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpressionStatement.Builder(expression);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpressionStatement.Builder withExpression(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression.Builder expression) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpressionStatement.Builder(expression.build());
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpressionStatement.Builder body
+ // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpressionStatement.Builder body
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpressionStatement body
+ // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpressionStatement body
+}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustStatement.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustStatement.java
new file mode 100644
index 0000000..0e49c03
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustStatement.java
@@ -0,0 +1,18 @@
+// Generated by hobgoblin.
+
+package org.zwobble.hobgoblin.compiler.output.lang.rust.ast;
+
+// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustStatement imports
+// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustStatement imports
+
+public sealed interface RustStatement permits org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpressionStatement {
+ public interface Builder {
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustStatement build();
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustStatement.Builder body
+ // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustStatement.Builder body
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustStatement body
+ // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustStatement body
+}