File tree Expand file tree Collapse file tree 1 file changed +12
-7
lines changed Expand file tree Collapse file tree 1 file changed +12
-7
lines changed Original file line number Diff line number Diff line change @@ -229,15 +229,20 @@ fn find_related_tests(
229
229
for ( file_id, refs) in refs. into_iter ( ) . flat_map ( |refs| refs. references ) {
230
230
let file = sema. parse ( file_id) ;
231
231
let file = file. syntax ( ) ;
232
- let functions = refs . iter ( ) . filter_map ( | ( range , _ ) | {
233
- let token = file . token_at_offset ( range . start ( ) ) . next ( ) ? ;
234
- let token = sema . descend_into_macros ( token ) ;
235
- token
236
- . ancestors ( )
237
- . find_map ( ast :: Fn :: cast )
238
- . map ( |f| hir :: InFile :: new ( sema . hir_file_for ( f . syntax ( ) ) , f ) )
232
+
233
+ // create flattened vec of tokens
234
+ let tokens = refs . iter ( ) . flat_map ( | ( range , _ ) | {
235
+ match file . token_at_offset ( range . start ( ) ) . next ( ) {
236
+ Some ( token ) => sema . descend_into_macros_many ( token ) ,
237
+ None => Default :: default ( ) ,
238
+ }
239
239
} ) ;
240
240
241
+ // find first suitable ancestor
242
+ let functions = tokens
243
+ . filter_map ( |token| token. ancestors ( ) . find_map ( ast:: Fn :: cast) )
244
+ . map ( |f| hir:: InFile :: new ( sema. hir_file_for ( f. syntax ( ) ) , f) ) ;
245
+
241
246
for fn_def in functions {
242
247
// #[test/bench] expands to just the item causing us to lose the attribute, so recover them by going out of the attribute
243
248
let InFile { value : fn_def, .. } = & fn_def. node_with_attributes ( sema. db ) ;
You can’t perform that action at this time.
0 commit comments