@@ -147,32 +147,32 @@ fn find_name(
147147) -> Option < RangeInfo < Definition > > {
148148 if let Some ( name) = opt_name {
149149 let def = NameClass :: classify ( sema, & name) ?. referenced_or_defined ( sema. db ) ;
150- let range = name. syntax ( ) . text_range ( ) ;
150+ let FileRange { range, .. } = sema . original_range ( name. syntax ( ) ) ;
151151 return Some ( RangeInfo :: new ( range, def) ) ;
152152 }
153153
154- let ( text_range , def) = if let Some ( lifetime) =
154+ let ( FileRange { range , .. } , def) = if let Some ( lifetime) =
155155 sema. find_node_at_offset_with_descend :: < ast:: Lifetime > ( & syntax, position. offset )
156156 {
157157 if let Some ( def) = NameRefClass :: classify_lifetime ( sema, & lifetime)
158158 . map ( |class| NameRefClass :: referenced ( class, sema. db ) )
159159 {
160- ( lifetime. syntax ( ) . text_range ( ) , def)
160+ ( sema . original_range ( lifetime. syntax ( ) ) , def)
161161 } else {
162162 (
163- lifetime. syntax ( ) . text_range ( ) ,
163+ sema . original_range ( lifetime. syntax ( ) ) ,
164164 NameClass :: classify_lifetime ( sema, & lifetime) ?. referenced_or_defined ( sema. db ) ,
165165 )
166166 }
167167 } else {
168168 let name_ref =
169169 sema. find_node_at_offset_with_descend :: < ast:: NameRef > ( & syntax, position. offset ) ?;
170170 (
171- name_ref. syntax ( ) . text_range ( ) ,
171+ sema . original_range ( name_ref. syntax ( ) ) ,
172172 NameRefClass :: classify ( sema, & name_ref) ?. referenced ( sema. db ) ,
173173 )
174174 } ;
175- Some ( RangeInfo :: new ( text_range , def) )
175+ Some ( RangeInfo :: new ( range , def) )
176176}
177177
178178fn decl_access ( def : & Definition , syntax : & SyntaxNode , range : TextRange ) -> Option < ReferenceAccess > {
@@ -1086,4 +1086,40 @@ impl<'a> Foo<'a> for &'a () {
10861086 "# ] ] ,
10871087 ) ;
10881088 }
1089+
1090+ #[ test]
1091+ fn test_map_range_to_original ( ) {
1092+ check (
1093+ r#"
1094+ macro_rules! foo {($i:ident) => {$i} }
1095+ fn main() {
1096+ let a<|> = "test";
1097+ foo!(a);
1098+ }
1099+ "# ,
1100+ expect ! [ [ r#"
1101+ a Local FileId(0) 59..60 Other
1102+
1103+ FileId(0) 80..81 Other Read
1104+ "# ] ] ,
1105+ ) ;
1106+ }
1107+
1108+ #[ test]
1109+ fn test_map_range_to_original_ref ( ) {
1110+ check (
1111+ r#"
1112+ macro_rules! foo {($i:ident) => {$i} }
1113+ fn main() {
1114+ let a = "test";
1115+ foo!(a<|>);
1116+ }
1117+ "# ,
1118+ expect ! [ [ r#"
1119+ a Local FileId(0) 59..60 Other
1120+
1121+ FileId(0) 80..81 Other Read
1122+ "# ] ] ,
1123+ ) ;
1124+ }
10891125}
0 commit comments