about summary refs log tree commit diff
path: root/compiler/rustc_ast_pretty/src/pprust/mod.rs
diff options
context:
space:
mode:
authorNicholas Nethercote <n.nethercote@gmail.com>2025-06-02 19:39:38 +1000
committerNicholas Nethercote <n.nethercote@gmail.com>2025-06-12 21:17:17 +1000
commit376cbc3787d2312b6b3b5db84dd1734fed1ebda6 (patch)
tree1f93fafea489fc66c36fbacd70b45931952418f2 /compiler/rustc_ast_pretty/src/pprust/mod.rs
parentbdfe1b9fb0c3f98df2a99ab96c6190542c234060 (diff)
downloadrust-376cbc3787d2312b6b3b5db84dd1734fed1ebda6.tar.gz
rust-376cbc3787d2312b6b3b5db84dd1734fed1ebda6.zip
Introduce `-Zmacro-stats`.
It collects data about macro expansions and prints them in a table after
expansion finishes. It's very useful for detecting macro bloat,
especially for proc macros.

Details:
- It measures code snippets by pretty-printing them and then measuring
  lines and bytes. This required a bunch of additional pretty-printing
  plumbing, in `rustc_ast_pretty` and `rustc_expand`.
- The measurement is done in `MacroExpander::expand_invoc`.
- The measurements are stored in `ExtCtxt::macro_stats`.
Diffstat (limited to 'compiler/rustc_ast_pretty/src/pprust/mod.rs')
-rw-r--r--compiler/rustc_ast_pretty/src/pprust/mod.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/compiler/rustc_ast_pretty/src/pprust/mod.rs b/compiler/rustc_ast_pretty/src/pprust/mod.rs
index a05e2bd6a5d..a766e2006e5 100644
--- a/compiler/rustc_ast_pretty/src/pprust/mod.rs
+++ b/compiler/rustc_ast_pretty/src/pprust/mod.rs
@@ -53,6 +53,18 @@ pub fn item_to_string(i: &ast::Item) -> String {
     State::new().item_to_string(i)
 }
 
+pub fn assoc_item_to_string(i: &ast::AssocItem) -> String {
+    State::new().assoc_item_to_string(i)
+}
+
+pub fn foreign_item_to_string(i: &ast::ForeignItem) -> String {
+    State::new().foreign_item_to_string(i)
+}
+
+pub fn stmt_to_string(s: &ast::Stmt) -> String {
+    State::new().stmt_to_string(s)
+}
+
 pub fn path_to_string(p: &ast::Path) -> String {
     State::new().path_to_string(p)
 }