about summary refs log tree commit diff
path: root/src/tools/rust-analyzer/crates
diff options
context:
space:
mode:
authorroife <roifewu@gmail.com>2024-07-10 01:23:27 +0800
committerroife <roifewu@gmail.com>2024-07-20 01:42:52 +0800
commitc590cfb700c935fa5b4be99756a8737ffb5c2690 (patch)
tree21e327b139d6c78803c53ca18a9692c2ae93fecc /src/tools/rust-analyzer/crates
parent92d0ee87583f6de80b31c96272b420151895baec (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.rs1
-rw-r--r--src/tools/rust-analyzer/crates/ide/src/highlight_related.rs18
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);
+                                    },
+                                    _ => {}
+                                }
+                            }
                         }
                     }
                 }