@@ -70,15 +70,19 @@ macro_rules! _bail {
7070}
7171pub use _bail as bail;
7272
73+ #[ derive( Copy , Clone , Debug , PartialEq , Eq ) ]
74+ pub enum RenameDefinition {
75+ Yes ,
76+ No ,
77+ }
78+
7379impl Definition {
7480 pub fn rename (
7581 & self ,
7682 sema : & Semantics < ' _ , RootDatabase > ,
7783 new_name : & str ,
84+ rename_definition : RenameDefinition ,
7885 ) -> Result < SourceChange > {
79- // We append `r#` if needed.
80- let new_name = new_name. trim_start_matches ( "r#" ) ;
81-
8286 // self.krate() returns None if
8387 // self is a built-in attr, built-in type or tool module.
8488 // it is not allowed for these defs to be renamed.
@@ -103,8 +107,10 @@ impl Definition {
103107 bail ! ( "Cannot rename a builtin attr." )
104108 }
105109 Definition :: SelfType ( _) => bail ! ( "Cannot rename `Self`" ) ,
106- Definition :: Macro ( mac) => rename_reference ( sema, Definition :: Macro ( mac) , new_name) ,
107- def => rename_reference ( sema, def, new_name) ,
110+ Definition :: Macro ( mac) => {
111+ rename_reference ( sema, Definition :: Macro ( mac) , new_name, rename_definition)
112+ }
113+ def => rename_reference ( sema, def, new_name, rename_definition) ,
108114 }
109115 }
110116
@@ -328,6 +334,7 @@ fn rename_reference(
328334 sema : & Semantics < ' _ , RootDatabase > ,
329335 def : Definition ,
330336 new_name : & str ,
337+ rename_definition : RenameDefinition ,
331338) -> Result < SourceChange > {
332339 let ident_kind = IdentifierKind :: classify ( new_name) ?;
333340
@@ -366,11 +373,12 @@ fn rename_reference(
366373 source_edit_from_references ( references, def, new_name, file_id. edition ( sema. db ) ) ,
367374 )
368375 } ) ) ;
369-
370- // This needs to come after the references edits, because we change the annotation of existing edits
371- // if a conflict is detected.
372- let ( file_id, edit) = source_edit_from_def ( sema, def, new_name, & mut source_change) ?;
373- source_change. insert_source_edit ( file_id, edit) ;
376+ if rename_definition == RenameDefinition :: Yes {
377+ // This needs to come after the references edits, because we change the annotation of existing edits
378+ // if a conflict is detected.
379+ let ( file_id, edit) = source_edit_from_def ( sema, def, new_name, & mut source_change) ?;
380+ source_change. insert_source_edit ( file_id, edit) ;
381+ }
374382 Ok ( source_change)
375383}
376384
0 commit comments