From a52ff23faed545f7f8ec2b0fa3cb0c7a31df3068 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 9 Aug 2026 17:09:32 +0100 Subject: Add visibility to type aliases in Rust AST --- .../compiler/output/lang/rust/RustWriter.java | 5 ++++ .../output/lang/rust/ast/RustTypeAlias.java | 28 +++++++++++++++------- 2 files changed, 24 insertions(+), 9 deletions(-) (limited to 'src/main/java/org') 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 visibility, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIdentifier name, java.util.List 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 visibility, org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIdentifier name, java.util.List 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 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 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(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(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 -- cgit v1.2.3