diff options
| author | Nicholas Nethercote <n.nethercote@gmail.com> | 2025-06-02 19:39:38 +1000 |
|---|---|---|
| committer | Nicholas Nethercote <n.nethercote@gmail.com> | 2025-06-12 21:17:17 +1000 |
| commit | 376cbc3787d2312b6b3b5db84dd1734fed1ebda6 (patch) | |
| tree | 1f93fafea489fc66c36fbacd70b45931952418f2 /compiler/rustc_ast_pretty/src/pprust/mod.rs | |
| parent | bdfe1b9fb0c3f98df2a99ab96c6190542c234060 (diff) | |
| download | rust-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.rs | 12 |
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) } |
