diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-08-09 17:09:32 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-08-09 17:09:32 +0100 |
| commit | a52ff23faed545f7f8ec2b0fa3cb0c7a31df3068 (patch) | |
| tree | 17af48456698914e80e97f9360c69d63a94fe603 /src/main | |
| parent | 942ca80a1f6d1cded5cb112dd347f8301567fe3f (diff) | |
Add visibility to type aliases in Rust AST
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/RustWriter.java | 5 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustTypeAlias.java | 28 |
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 |
