diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2025-08-01 16:57:39 +0200 |
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2025-08-23 00:57:29 +0200 |
| commit | 0e9b126695847418a681b96b87b5976fb069394a (patch) | |
| tree | a162b2114f5f63c4210d2a0737fb99060bfc1871 /src/librustdoc/html | |
| parent | bd5f3d76789028e0cdb432ff20f744b6fb24efc2 (diff) | |
Also support statements and patterns for macro expansion
Diffstat (limited to 'src/librustdoc/html')
| -rw-r--r-- | src/librustdoc/html/macro_expansion.rs | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/librustdoc/html/macro_expansion.rs b/src/librustdoc/html/macro_expansion.rs index 7b6758868b7..d76663a3d1a 100644 --- a/src/librustdoc/html/macro_expansion.rs +++ b/src/librustdoc/html/macro_expansion.rs @@ -1,5 +1,5 @@ -use rustc_ast::visit::{Visitor, walk_crate, walk_expr, walk_item}; -use rustc_ast::{Crate, Expr, Item}; +use rustc_ast::visit::{Visitor, walk_crate, walk_expr, walk_item, walk_pat, walk_stmt}; +use rustc_ast::{Crate, Expr, Item, Pat, Stmt}; use rustc_data_structures::fx::FxHashMap; use rustc_span::source_map::SourceMap; use rustc_span::{BytePos, Span}; @@ -137,4 +137,20 @@ impl<'ast> Visitor<'ast> for ExpandedCodeVisitor<'ast> { walk_item(self, item); } } + + fn visit_stmt(&mut self, stmt: &'ast Stmt) { + if stmt.span.from_expansion() { + self.handle_new_span(stmt.span, || rustc_ast_pretty::pprust::stmt_to_string(stmt)); + } else { + walk_stmt(self, stmt); + } + } + + fn visit_pat(&mut self, pat: &'ast Pat) { + if pat.span.from_expansion() { + self.handle_new_span(pat.span, || rustc_ast_pretty::pprust::pat_to_string(pat)); + } else { + walk_pat(self, pat); + } + } } |
