@@ -11,7 +11,6 @@ use ide_db::{
1111 preorder_expr_with_ctx_checker,
1212 } ,
1313} ;
14- use span:: FileId ;
1514use syntax:: {
1615 AstNode ,
1716 SyntaxKind :: { self , IDENT , INT_NUMBER } ,
@@ -61,13 +60,12 @@ pub(crate) fn highlight_related(
6160 let file_id = sema
6261 . attach_first_edition ( file_id)
6362 . unwrap_or_else ( || EditionedFileId :: current_edition ( sema. db , file_id) ) ;
64- let span_file_id = file_id. editioned_file_id ( sema. db ) ;
6563 let syntax = sema. parse ( file_id) . syntax ( ) . clone ( ) ;
6664
6765 let token = pick_best_token ( syntax. token_at_offset ( offset) , |kind| match kind {
6866 T ! [ ?] => 4 , // prefer `?` when the cursor is sandwiched like in `await$0?`
6967 T ! [ ->] => 4 ,
70- kind if kind. is_keyword ( span_file_id . edition ( ) ) => 3 ,
68+ kind if kind. is_keyword ( file_id . edition ( sema . db ) ) => 3 ,
7169 IDENT | INT_NUMBER => 2 ,
7270 T ! [ |] => 1 ,
7371 _ => 0 ,
@@ -92,18 +90,11 @@ pub(crate) fn highlight_related(
9290 T ! [ unsafe ] if token. parent ( ) . and_then ( ast:: BlockExpr :: cast) . is_some ( ) => {
9391 highlight_unsafe_points ( sema, token) . remove ( & file_id)
9492 }
95- T ! [ |] if config. closure_captures => {
96- highlight_closure_captures ( sema, token, file_id, span_file_id. file_id ( ) )
93+ T ! [ |] if config. closure_captures => highlight_closure_captures ( sema, token, file_id) ,
94+ T ! [ move] if config. closure_captures => highlight_closure_captures ( sema, token, file_id) ,
95+ _ if config. references => {
96+ highlight_references ( sema, token, FilePosition { file_id, offset } )
9797 }
98- T ! [ move] if config. closure_captures => {
99- highlight_closure_captures ( sema, token, file_id, span_file_id. file_id ( ) )
100- }
101- _ if config. references => highlight_references (
102- sema,
103- token,
104- FilePosition { file_id, offset } ,
105- span_file_id. file_id ( ) ,
106- ) ,
10798 _ => None ,
10899 }
109100}
@@ -112,7 +103,6 @@ fn highlight_closure_captures(
112103 sema : & Semantics < ' _ , RootDatabase > ,
113104 token : SyntaxToken ,
114105 file_id : EditionedFileId ,
115- vfs_file_id : FileId ,
116106) -> Option < Vec < HighlightedRange > > {
117107 let closure = token. parent_ancestors ( ) . take ( 2 ) . find_map ( ast:: ClosureExpr :: cast) ?;
118108 let search_range = closure. body ( ) ?. syntax ( ) . text_range ( ) ;
@@ -145,7 +135,7 @@ fn highlight_closure_captures(
145135 . sources ( sema. db )
146136 . into_iter ( )
147137 . flat_map ( |x| x. to_nav ( sema. db ) )
148- . filter ( |decl| decl. file_id == vfs_file_id )
138+ . filter ( |decl| decl. file_id == file_id . file_id ( sema . db ) )
149139 . filter_map ( |decl| decl. focus_range )
150140 . map ( move |range| HighlightedRange { range, category } )
151141 . chain ( usages)
@@ -158,7 +148,6 @@ fn highlight_references(
158148 sema : & Semantics < ' _ , RootDatabase > ,
159149 token : SyntaxToken ,
160150 FilePosition { file_id, offset } : FilePosition ,
161- vfs_file_id : FileId ,
162151) -> Option < Vec < HighlightedRange > > {
163152 let defs = if let Some ( ( range, resolution) ) =
164153 sema. check_for_format_args_template ( token. clone ( ) , offset)
@@ -270,7 +259,7 @@ fn highlight_references(
270259 . sources ( sema. db )
271260 . into_iter ( )
272261 . flat_map ( |x| x. to_nav ( sema. db ) )
273- . filter ( |decl| decl. file_id == vfs_file_id )
262+ . filter ( |decl| decl. file_id == file_id . file_id ( sema . db ) )
274263 . filter_map ( |decl| decl. focus_range )
275264 . map ( |range| HighlightedRange { range, category } )
276265 . for_each ( |x| {
@@ -288,7 +277,7 @@ fn highlight_references(
288277 } ,
289278 } ;
290279 for nav in navs {
291- if nav. file_id != vfs_file_id {
280+ if nav. file_id != file_id . file_id ( sema . db ) {
292281 continue ;
293282 }
294283 let hl_range = nav. focus_range . map ( |range| {
0 commit comments