diff options
| author | roife <roifewu@gmail.com> | 2024-07-10 01:23:27 +0800 |
|---|---|---|
| committer | roife <roifewu@gmail.com> | 2024-07-20 01:42:52 +0800 |
| commit | c590cfb700c935fa5b4be99756a8737ffb5c2690 (patch) | |
| tree | 21e327b139d6c78803c53ca18a9692c2ae93fecc /src/tools/rust-analyzer/crates | |
| parent | 92d0ee87583f6de80b31c96272b420151895baec (diff) | |
fix: ensure that highlight_related works for macro_expr
Diffstat (limited to 'src/tools/rust-analyzer/crates')
| -rw-r--r-- | src/tools/rust-analyzer/crates/ide/src/goto_definition.rs | 1 | ||||
| -rw-r--r-- | src/tools/rust-analyzer/crates/ide/src/highlight_related.rs | 18 |
2 files changed, 13 insertions, 6 deletions
diff --git a/src/tools/rust-analyzer/crates/ide/src/goto_definition.rs b/src/tools/rust-analyzer/crates/ide/src/goto_definition.rs index 284fd7861d6..ed9db326313 100644 --- a/src/tools/rust-analyzer/crates/ide/src/goto_definition.rs +++ b/src/tools/rust-analyzer/crates/ide/src/goto_definition.rs @@ -14,7 +14,6 @@ use ide_db::{ FileId, RootDatabase, }; use itertools::Itertools; -use span::FileRange; use syntax::{ ast::{self, HasLoopBody, Label}, match_ast, AstNode, AstToken, diff --git a/src/tools/rust-analyzer/crates/ide/src/highlight_related.rs b/src/tools/rust-analyzer/crates/ide/src/highlight_related.rs index 065c3f2452e..b1efd90d4e8 100644 --- a/src/tools/rust-analyzer/crates/ide/src/highlight_related.rs +++ b/src/tools/rust-analyzer/crates/ide/src/highlight_related.rs @@ -575,12 +575,20 @@ impl<'a> WalkExpandedExprCtx<'a> { } if let ast::Expr::MacroExpr(expr) = expr { - if let Some(expanded) = expr - .macro_call() - .and_then(|call| self.sema.expand(&call)) - .and_then(ast::MacroStmts::cast) + if let Some(expanded) = + expr.macro_call().and_then(|call| self.sema.expand(&call)) { - self.handle_expanded(expanded, cb); + match_ast! { + match expanded { + ast::MacroStmts(it) => { + self.handle_expanded(it, cb); + }, + ast::Expr(it) => { + self.walk(&it, cb); + }, + _ => {} + } + } } } } |
