@@ -13,7 +13,7 @@ use ide_db::{
13
13
} ;
14
14
use itertools:: Itertools ;
15
15
use stdx:: { always, never} ;
16
- use syntax:: { ast, AstNode , SyntaxNode } ;
16
+ use syntax:: { ast, AstNode , SyntaxNode , TextRange , TextSize } ;
17
17
18
18
use text_edit:: TextEdit ;
19
19
@@ -48,7 +48,13 @@ pub(crate) fn prepare_rename(
48
48
frange. range. contains_inclusive( position. offset)
49
49
&& frange. file_id == position. file_id
50
50
) ;
51
- Ok ( frange. range )
51
+
52
+ Ok ( match name_like {
53
+ ast:: NameLike :: Lifetime ( _) => {
54
+ TextRange :: new ( frange. range . start ( ) + TextSize :: from ( 1 ) , frange. range . end ( ) )
55
+ }
56
+ _ => frange. range ,
57
+ } )
52
58
} )
53
59
. reduce ( |acc, cur| match ( acc, cur) {
54
60
// ensure all ranges are the same
@@ -407,7 +413,7 @@ mod tests {
407
413
#[ test]
408
414
fn test_prepare_rename_namelikes ( ) {
409
415
check_prepare ( r"fn name$0<'lifetime>() {}" , expect ! [ [ r#"3..7: name"# ] ] ) ;
410
- check_prepare ( r"fn name<'lifetime$0>() {}" , expect ! [ [ r#"8 ..17: ' lifetime"# ] ] ) ;
416
+ check_prepare ( r"fn name<'lifetime$0>() {}" , expect ! [ [ r#"9 ..17: lifetime"# ] ] ) ;
411
417
check_prepare ( r"fn name<'lifetime>() { name$0(); }" , expect ! [ [ r#"23..27: name"# ] ] ) ;
412
418
}
413
419
0 commit comments