@@ -4,8 +4,8 @@ use arrayvec::ArrayVec;
4
4
use ast:: HasName ;
5
5
use cfg:: { CfgAtom , CfgExpr } ;
6
6
use hir:: {
7
- AsAssocItem , AttrsWithOwner , HasAttrs , HasCrate , HasSource , ModPath , Name , PathKind , Semantics ,
8
- Symbol , db :: HirDatabase , sym,
7
+ AsAssocItem , AttrsWithOwner , HasAttrs , HasCrate , HasSource , Semantics , Symbol , db :: HirDatabase ,
8
+ sym,
9
9
} ;
10
10
use ide_assists:: utils:: { has_test_related_attribute, test_related_attribute_syn} ;
11
11
use ide_db:: {
@@ -352,8 +352,7 @@ pub(crate) fn runnable_fn(
352
352
. call_site ( ) ;
353
353
354
354
let file_range = fn_source. syntax ( ) . original_file_range_with_macro_call_input ( sema. db ) ;
355
- let update_test =
356
- UpdateTest :: find_snapshot_macro ( sema, & fn_source. file_syntax ( sema. db ) , file_range) ;
355
+ let update_test = UpdateTest :: find_snapshot_macro ( sema, file_range) ;
357
356
358
357
let cfg = def. attrs ( sema. db ) . cfg ( ) ;
359
358
Some ( Runnable { use_name_in_title : false , nav, kind, cfg, update_test } )
@@ -388,7 +387,7 @@ pub(crate) fn runnable_mod(
388
387
file_id : module_source. file_id . original_file ( sema. db ) ,
389
388
range : module_syntax. text_range ( ) ,
390
389
} ;
391
- let update_test = UpdateTest :: find_snapshot_macro ( sema, & module_syntax , file_range) ;
390
+ let update_test = UpdateTest :: find_snapshot_macro ( sema, file_range) ;
392
391
393
392
Some ( Runnable {
394
393
use_name_in_title : false ,
@@ -428,8 +427,7 @@ pub(crate) fn runnable_impl(
428
427
let impl_source = sema. source ( * def) ?;
429
428
let impl_syntax = impl_source. syntax ( ) ;
430
429
let file_range = impl_syntax. original_file_range_with_macro_call_input ( sema. db ) ;
431
- let update_test =
432
- UpdateTest :: find_snapshot_macro ( sema, & impl_syntax. file_syntax ( sema. db ) , file_range) ;
430
+ let update_test = UpdateTest :: find_snapshot_macro ( sema, file_range) ;
433
431
434
432
Some ( Runnable {
435
433
use_name_in_title : false ,
@@ -475,7 +473,7 @@ fn runnable_mod_outline_definition(
475
473
file_id : mod_source. file_id . original_file ( sema. db ) ,
476
474
range : mod_syntax. text_range ( ) ,
477
475
} ;
478
- let update_test = UpdateTest :: find_snapshot_macro ( sema, & mod_syntax , file_range) ;
476
+ let update_test = UpdateTest :: find_snapshot_macro ( sema, file_range) ;
479
477
480
478
Some ( Runnable {
481
479
use_name_in_title : false ,
@@ -641,7 +639,7 @@ pub struct UpdateTest {
641
639
pub snapbox : bool ,
642
640
}
643
641
644
- static SNAPSHOT_TEST_MACROS : OnceLock < FxHashMap < & str , Vec < ModPath > > > = OnceLock :: new ( ) ;
642
+ static SNAPSHOT_TEST_MACROS : OnceLock < FxHashMap < & str , Vec < [ Symbol ; 2 ] > > > = OnceLock :: new ( ) ;
645
643
646
644
impl UpdateTest {
647
645
const EXPECT_CRATE : & str = "expect_test" ;
@@ -665,22 +663,17 @@ impl UpdateTest {
665
663
const SNAPBOX_CRATE : & str = "snapbox" ;
666
664
const SNAPBOX_MACROS : & [ & str ] = & [ "assert_data_eq" , "file" , "str" ] ;
667
665
668
- fn find_snapshot_macro (
669
- sema : & Semantics < ' _ , RootDatabase > ,
670
- scope : & SyntaxNode ,
671
- file_range : hir:: FileRange ,
672
- ) -> Self {
666
+ fn find_snapshot_macro ( sema : & Semantics < ' _ , RootDatabase > , file_range : hir:: FileRange ) -> Self {
673
667
fn init < ' a > (
674
668
krate_name : & ' a str ,
675
669
paths : & [ & str ] ,
676
- map : & mut FxHashMap < & ' a str , Vec < ModPath > > ,
670
+ map : & mut FxHashMap < & ' a str , Vec < [ Symbol ; 2 ] > > ,
677
671
) {
678
672
let mut res = Vec :: with_capacity ( paths. len ( ) ) ;
679
- let krate = Name :: new_symbol_root ( Symbol :: intern ( krate_name) ) ;
673
+ let krate = Symbol :: intern ( krate_name) ;
680
674
for path in paths {
681
- let segments = [ krate. clone ( ) , Name :: new_symbol_root ( Symbol :: intern ( path) ) ] ;
682
- let mod_path = ModPath :: from_segments ( PathKind :: Abs , segments) ;
683
- res. push ( mod_path) ;
675
+ let segments = [ krate. clone ( ) , Symbol :: intern ( path) ] ;
676
+ res. push ( segments) ;
684
677
}
685
678
map. insert ( krate_name, res) ;
686
679
}
@@ -694,11 +687,9 @@ impl UpdateTest {
694
687
} ) ;
695
688
696
689
let search_scope = SearchScope :: file_range ( file_range) ;
697
- let find_macro = |paths : & [ ModPath ] | {
690
+ let find_macro = |paths : & [ [ Symbol ; 2 ] ] | {
698
691
for path in paths {
699
- let Some ( items) = sema. resolve_mod_path ( scope, path) else {
700
- continue ;
701
- } ;
692
+ let items = hir:: resolve_absolute_path ( sema. db , path. iter ( ) . cloned ( ) ) ;
702
693
for item in items {
703
694
if let hir:: ItemInNs :: Macros ( makro) = item
704
695
&& Definition :: Macro ( makro)
0 commit comments