summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriter.java10
-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/RustFieldExpression.java40
3 files changed, 51 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 665a056..5a29448 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
@@ -305,6 +305,10 @@ public class RustWriter implements AutoCloseable {
this.writeCallExpression(callExpression);
}
+ case RustFieldExpression fieldExpression -> {
+ this.writeFieldExpression(fieldExpression);
+ }
+
case RustPathInExpression pathInExpression -> {
this.writePathInExpression(pathInExpression);
}
@@ -347,6 +351,12 @@ public class RustWriter implements AutoCloseable {
this.writer.write(")");
}
+ private void writeFieldExpression(RustFieldExpression fieldExpression) throws IOException {
+ this.writeExpression(fieldExpression.containerOperand());
+ this.writer.write(".");
+ this.writeIdentifier(fieldExpression.fieldName());
+ }
+
// == 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 4fea607..f850a72 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.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.RustPathInExpression {
+public sealed interface RustExpression permits 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.RustPathInExpression {
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/RustFieldExpression.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustFieldExpression.java
new file mode 100644
index 0000000..12e86f3
--- /dev/null
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustFieldExpression.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.RustFieldExpression imports
+// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression imports
+
+public record RustFieldExpression(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression containerOperand, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIdentifier fieldName) implements org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression {
+ public static org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression.Builder arbitrary() {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression.Builder(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustBlockExpression.arbitrary().build(), org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIdentifier.arbitrary().build());
+ }
+
+ public record Builder(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression containerOperand, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIdentifier fieldName) implements org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression.Builder {
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression build() {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression(containerOperand, fieldName);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression.Builder withContainerOperand(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression containerOperand) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression.Builder(containerOperand, fieldName);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression.Builder withContainerOperand(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustExpression.Builder containerOperand) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression.Builder(containerOperand.build(), fieldName);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression.Builder withFieldName(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIdentifier fieldName) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression.Builder(containerOperand, fieldName);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression.Builder withFieldName(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIdentifier.Builder fieldName) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression.Builder(containerOperand, fieldName.build());
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression.Builder body
+ // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression.Builder body
+ }
+
+ // Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression body
+ // Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustFieldExpression body
+}