[gccrs COMMIT 2/3] Do not export indentation levels within metadata

[email protected] Mon, 3 Aug 2026 03:35:52 +0000
Newsgroups gmane.comp.gcc.rust,gmane.comp.gcc.patches
Message-ID <[email protected]>
From: Pierre-Emmanuel Patry <[email protected]>

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]>
---
This change was merged into the gccrs repository and is posted here for
upstream visibility and potential drive-by review, as requested by GCC
release managers.
Each commit email contains a link to its details on github from where you can
find the Pull-Request and associated discussions.


Commit on github: https://github.com/Rust-GCC/gccrs/commit/01db3a43fa53e87186dcaf20780f69d2892da339

The commit has NOT been mentioned in any issue.

The commit has been mentioned in the following pull-request(s):
 - https://github.com/Rust-GCC/gccrs/pull/4694

 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 e813ea9d7..24c58e593 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 cb281de8e..a59e224df 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 5d01c5425..4c36be9f5 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 6a56c956d..f6fabb3bf 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);
-- 
2.54.0