summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-08-09 17:09:32 +0100
committerMichael Williamson <mike@zwobble.org>2026-08-09 17:09:32 +0100
commita52ff23faed545f7f8ec2b0fa3cb0c7a31df3068 (patch)
tree17af48456698914e80e97f9360c69d63a94fe603 /src/main/java
parent942ca80a1f6d1cded5cb112dd347f8301567fe3f (diff)
Add visibility to type aliases in Rust AST
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriter.java5
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTypeAlias.java28
2 files changed, 24 insertions, 9 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 72d17b7..3438147 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
@@ -136,6 +136,11 @@ public class RustWriter implements AutoCloseable {
// === Type aliases ===
private void writeTypeAlias(RustTypeAlias typeAlias) throws IOException {
+ if (typeAlias.visibility().isPresent()) {
+ this.writeVisibility(typeAlias.visibility().get());
+ this.writer.write(" ");
+ }
+
this.writer.write("type ");
this.writeIdentifier(typeAlias.name());
if (!typeAlias.params().isEmpty()) {
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTypeAlias.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTypeAlias.java
index 3c7493e..21e420a 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTypeAlias.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTypeAlias.java
@@ -6,53 +6,63 @@ package org.zwobble.hobgoblin.compiler.output.lang.rust.ast;
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias imports
public record RustTypeAlias(
+ java.util.Optional<org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustVisibility> visibility,
org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIdentifier name,
java.util.List<org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeParam> params,
org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustType type
) implements org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustItem {
public static org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder arbitrary() {
- return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIdentifier.arbitrary().build(), java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustImplTraitType.arbitrary().build());
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder(java.util.Optional.empty(), org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIdentifier.arbitrary().build(), java.util.List.of(), org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustImplTraitType.arbitrary().build());
}
public record Builder(
+ java.util.Optional<org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustVisibility> visibility,
org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIdentifier name,
java.util.List<org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeParam> params,
org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustType type
) implements org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustItem.Builder {
public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias build() {
- return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias(name, params, type);
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias(visibility, name, params, type);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder withVisibility(java.util.Optional<org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustVisibility> visibility) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder(visibility, name, params, type);
+ }
+
+ public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder withVisibility(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustVisibility visibility) {
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder(java.util.Optional.of(visibility), name, params, type);
}
public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIdentifier name) {
- return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder(name, params, type);
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder(visibility, name, params, type);
}
public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder withName(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIdentifier.Builder name) {
- return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder(name.build(), params, type);
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder(visibility, name.build(), params, type);
}
public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder withParams(java.util.List<org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeParam> params) {
- return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder(name, params, type);
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder(visibility, name, params, type);
}
public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder addParam(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeParam param) {
var params = new java.util.ArrayList<org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeParam>(this.params);
params.add(param);
- return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder(name, params, type);
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder(visibility, name, params, type);
}
public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder addParam(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeParam.Builder param) {
var params = new java.util.ArrayList<org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeParam>(this.params);
params.add(param.build());
- return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder(name, params, type);
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder(visibility, name, params, type);
}
public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder withType(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustType type) {
- return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder(name, params, type);
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder(visibility, name, params, type);
}
public org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder withType(org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustType.Builder type) {
- return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder(name, params, type.build());
+ return new org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder(visibility, name, params, type.build());
}
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustTypeAlias.Builder body