https://gcc.gnu.org/g:e4b1c9c5d94fe8de29ca7a4180405aec8b0bb3a6
commit r17-3127-ge4b1c9c5d94fe8de29ca7a4180405aec8b0bb3a6 Author: Pierre-Emmanuel Patry <[email protected]> Date: Wed Jul 8 14:50:59 2026 +0200 gccrs: Do not export indentation levels within metadata Those metadata files are meant to be read by the parser and not by humans Although it may help during compiler development, they could still get expanded by any rust pretty printer. gcc/rust/ChangeLog: * ast/rust-ast-dump.cc (Dump::Dump): Add a default indentation level of four and dump newlines. * ast/rust-ast-dump.h: Add newline and indentation level configuration options. * metadata/rust-export-metadata.cc (ExportContext::emit_crate): Do not export indentation and newlines. * rust-session-manager.cc (Session::dump_ast_pretty_internal): Use an indentation level of 4 and dump newlines. Signed-off-by: Pierre-Emmanuel Patry <[email protected]> Diff: --- gcc/rust/ast/rust-ast-dump.cc | 2 ++ gcc/rust/ast/rust-ast-dump.h | 17 +++++++++++++++-- gcc/rust/metadata/rust-export-metadata.cc | 10 +++++++++- gcc/rust/rust-session-manager.cc | 2 ++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/gcc/rust/ast/rust-ast-dump.cc b/gcc/rust/ast/rust-ast-dump.cc index e813ea9d7f55..24c58e593419 100644 --- a/gcc/rust/ast/rust-ast-dump.cc +++ b/gcc/rust/ast/rust-ast-dump.cc @@ -28,6 +28,8 @@ Dump::Dump (std::ostream &stream) Configuration::InternalComment::Hide, Configuration::NodeDescription::Hide, Configuration::Comment::Dump, + Configuration::Newline::Dump, + Configuration::Indentation::Space4, }) {} diff --git a/gcc/rust/ast/rust-ast-dump.h b/gcc/rust/ast/rust-ast-dump.h index cb281de8eee7..a59e224dfb0d 100644 --- a/gcc/rust/ast/rust-ast-dump.h +++ b/gcc/rust/ast/rust-ast-dump.h @@ -49,6 +49,16 @@ public: Dump, Hide, } dump_comments; + enum class Newline + { + Dump, + Hide, + } newline; + enum class Indentation + { + Space4, + None, + } indentation; }; Dump (std::ostream &stream); @@ -87,11 +97,14 @@ public: case AST::CollectItem::Kind::Indentation: for (size_t i = 0; i < item.get_indent_level (); i++) { - stream << " "; + if (configuration.indentation + == Configuration::Indentation::Space4) + stream << " "; } break; case AST::CollectItem::Kind::Newline: - stream << "\n"; + if (configuration.newline == Configuration::Newline::Dump) + stream << "\n"; previous = nullptr; break; case AST::CollectItem::Kind::BeginNodeDescription: diff --git a/gcc/rust/metadata/rust-export-metadata.cc b/gcc/rust/metadata/rust-export-metadata.cc index 5d01c5425f48..4c36be9f5ae2 100644 --- a/gcc/rust/metadata/rust-export-metadata.cc +++ b/gcc/rust/metadata/rust-export-metadata.cc @@ -42,7 +42,15 @@ void ExportContext::emit_crate (AST::Crate &c) { std::stringstream oss; - AST::Dump dumper (oss); + using AST::Dump; + AST::Dump dumper ( + oss, + Dump::Configuration{Dump::Configuration::InternalComment::Hide, + Dump::Configuration::NodeDescription::Hide, + Dump::Configuration::Comment::Hide, + Dump::Configuration::Newline::Hide, + Dump::Configuration::Indentation::None}, + {}); dumper.process (c); public_interface_buffer += oss.str (); diff --git a/gcc/rust/rust-session-manager.cc b/gcc/rust/rust-session-manager.cc index 6a56c956d9e3..f6fabb3bff58 100644 --- a/gcc/rust/rust-session-manager.cc +++ b/gcc/rust/rust-session-manager.cc @@ -1181,6 +1181,8 @@ Session::dump_ast_pretty_internal (AST::Crate &crate) const AST::Dump::Configuration::InternalComment::Dump, AST::Dump::Configuration::NodeDescription::Dump, AST::Dump::Configuration::Comment::Dump, + AST::Dump::Configuration::Newline::Dump, + AST::Dump::Configuration::Indentation::Space4, }, str_tmp) .go (crate);
