summaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriter.java11
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustExpression.java2
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustRangeExpr.java40
3 files changed, 52 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 d916311..3aaa588 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
@@ -359,6 +359,10 @@ public class RustWriter implements AutoCloseable {
this.writePrefixExpression(prefixExpression);
}
+ case RustRangeExpr rangeExpr -> {
+ this.writeRangeExpr(rangeExpr);
+ }
+
case RustStructExpression structExpression -> {
this.writeStructExpression(structExpression);
}
@@ -412,6 +416,7 @@ public class RustWriter implements AutoCloseable {
case RustIteratorLoopExpression _ -> RustPrecedence.PRIMARY;
case RustPath _ -> RustPrecedence.PATHS;
case RustPrefixExpression _ -> RustPrecedence.PREFIX;
+ case RustRangeExpr _ -> RustPrecedence.RANGE;
case RustStructExpression _ -> RustPrecedence.PRIMARY;
case RustTryPropagationExpression _ -> RustPrecedence.TRY_PROPAGATION;
case RustTupleExpression _ -> RustPrecedence.PRIMARY;
@@ -542,6 +547,12 @@ public class RustWriter implements AutoCloseable {
this.writeSubExpression(prefixExpression.operand(), precedence(prefixExpression), true);
}
+ private void writeRangeExpr(RustRangeExpr rangeExpr) throws IOException {
+ this.writeSubExpression(rangeExpr.start(), precedence(rangeExpr), false);
+ this.writer.write("..");
+ this.writeSubExpression(rangeExpr.end(), precedence(rangeExpr), false);
+ }
+
private void writeStructExpression(RustStructExpression structExpression) throws IOException {
this.writePath(structExpression.structPath());
this.writer.write(" {");
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 239f972..6cfea75 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.RustBinaryExpression, 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.RustIteratorLoopExpression, 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, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTupleExpression, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustVecRepeatExpression {
+public sealed interface RustExpression permits org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustArrayRepeatExpression, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustBinaryExpression, 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.RustIteratorLoopExpression, 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.RustRangeExpr, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustStructExpression, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTryPropagationExpression, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTupleExpression, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustVecRepeatExpression {
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/RustRangeExpr.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustRangeExpr.java
new file mode 100644
index 0000000..8afc225
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustRangeExpr.java
@@ -0,0 +1,40 @@
+// Generated by hobgoblin.
+
+package org.zwobble.hobgoblin.compiler.output.lang.rust.ast;
+
+// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustRangeExpr imports
+// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustRangeExpr imports
+
+public record RustRangeExpr(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression start, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression end) implements org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression {
+ public static org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustRangeExpr.Builder arbitrary() {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustRangeExpr.Builder(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustBlockExpression.arbitrary().build(), org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustBlockExpression.arbitrary().build());
+ }
+
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression start, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression end) implements org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression.Builder {
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustRangeExpr build() {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustRangeExpr(start, end);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustRangeExpr.Builder withStart(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression start) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustRangeExpr.Builder(start, end);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustRangeExpr.Builder withStart(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression.Builder start) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustRangeExpr.Builder(start.build(), end);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustRangeExpr.Builder withEnd(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression end) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustRangeExpr.Builder(start, end);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustRangeExpr.Builder withEnd(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression.Builder end) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustRangeExpr.Builder(start, end.build());
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustRangeExpr.Builder body
+ // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustRangeExpr.Builder body
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustRangeExpr body
+ // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustRangeExpr body
+}