@@ -8,7 +8,10 @@ use hir::{AsAssocItem, InFile, Name, Semantics, sym};
88use ide_db:: {
99 FileId , FileRange , RootDatabase ,
1010 defs:: { Definition , NameClass , NameRefClass } ,
11- rename:: { IdentifierKind , RenameDefinition , bail, format_err, source_edit_from_references} ,
11+ rename:: {
12+ IdentifierKind , RenameConfig , RenameDefinition , bail, format_err,
13+ source_edit_from_references,
14+ } ,
1215 source_change:: SourceChangeBuilder ,
1316} ;
1417use itertools:: Itertools ;
@@ -78,6 +81,7 @@ pub(crate) fn prepare_rename(
7881// 
7982pub ( crate ) fn rename (
8083 db : & RootDatabase ,
84+ config : & RenameConfig ,
8185 position : FilePosition ,
8286 new_name : & str ,
8387) -> RenameResult < SourceChange > {
@@ -145,7 +149,7 @@ pub(crate) fn rename(
145149 return rename_to_self ( & sema, local) ;
146150 }
147151 }
148- def. rename ( & sema, new_name. as_str ( ) , rename_def)
152+ def. rename ( & sema, config , new_name. as_str ( ) , rename_def)
149153 } )
150154 . collect ( ) ,
151155 } ;
@@ -159,13 +163,14 @@ pub(crate) fn rename(
159163/// Called by the client when it is about to rename a file.
160164pub ( crate ) fn will_rename_file (
161165 db : & RootDatabase ,
166+ config : & RenameConfig ,
162167 file_id : FileId ,
163168 new_name_stem : & str ,
164169) -> Option < SourceChange > {
165170 let sema = Semantics :: new ( db) ;
166171 let module = sema. file_to_module_def ( file_id) ?;
167172 let def = Definition :: Module ( module) ;
168- let mut change = def. rename ( & sema, new_name_stem, RenameDefinition :: Yes ) . ok ( ) ?;
173+ let mut change = def. rename ( & sema, config , new_name_stem, RenameDefinition :: Yes ) . ok ( ) ?;
169174 change. file_system_edits . clear ( ) ;
170175 Some ( change)
171176}
@@ -493,6 +498,7 @@ fn text_edit_from_self_param(self_param: &ast::SelfParam, new_name: String) -> O
493498#[ cfg( test) ]
494499mod tests {
495500 use expect_test:: { Expect , expect} ;
501+ use ide_db:: rename:: RenameConfig ;
496502 use ide_db:: source_change:: SourceChange ;
497503 use ide_db:: text_edit:: TextEdit ;
498504 use itertools:: Itertools ;
@@ -503,6 +509,8 @@ mod tests {
503509
504510 use super :: { RangeInfo , RenameError } ;
505511
512+ const TEST_CONFIG : RenameConfig = RenameConfig { show_conflicts : true } ;
513+
506514 #[ track_caller]
507515 fn check (
508516 new_name : & str ,
@@ -517,7 +525,7 @@ mod tests {
517525 }
518526 }
519527 let rename_result = analysis
520- . rename ( position, new_name)
528+ . rename ( & TEST_CONFIG , position, new_name)
521529 . unwrap_or_else ( |err| panic ! ( "Rename to '{new_name}' was cancelled: {err}" ) ) ;
522530 match rename_result {
523531 Ok ( source_change) => {
@@ -549,7 +557,7 @@ mod tests {
549557 #[ track_caller]
550558 fn check_conflicts ( new_name : & str , #[ rust_analyzer:: rust_fixture] ra_fixture : & str ) {
551559 let ( analysis, position, conflicts) = fixture:: annotations ( ra_fixture) ;
552- let source_change = analysis. rename ( position, new_name) . unwrap ( ) . unwrap ( ) ;
560+ let source_change = analysis. rename ( & TEST_CONFIG , position, new_name) . unwrap ( ) . unwrap ( ) ;
553561 let expected_conflicts = conflicts
554562 . into_iter ( )
555563 . map ( |( file_range, _) | ( file_range. file_id , file_range. range ) )
@@ -576,8 +584,10 @@ mod tests {
576584 expect : Expect ,
577585 ) {
578586 let ( analysis, position) = fixture:: position ( ra_fixture) ;
579- let source_change =
580- analysis. rename ( position, new_name) . unwrap ( ) . expect ( "Expect returned a RenameError" ) ;
587+ let source_change = analysis
588+ . rename ( & TEST_CONFIG , position, new_name)
589+ . unwrap ( )
590+ . expect ( "Expect returned a RenameError" ) ;
581591 expect. assert_eq ( & filter_expect ( source_change) )
582592 }
583593
@@ -588,7 +598,7 @@ mod tests {
588598 ) {
589599 let ( analysis, position) = fixture:: position ( ra_fixture) ;
590600 let source_change = analysis
591- . will_rename_file ( position. file_id , new_name)
601+ . will_rename_file ( & TEST_CONFIG , position. file_id , new_name)
592602 . unwrap ( )
593603 . expect ( "Expect returned a RenameError" ) ;
594604 expect. assert_eq ( & filter_expect ( source_change) )
0 commit comments