@@ -25,6 +25,7 @@ use std::fmt;
2525use base_db:: { AnchoredPathBuf , FileId , FileRange } ;
2626use either:: Either ;
2727use hir:: { AsAssocItem , FieldSource , HasSource , InFile , ModuleSource , Semantics } ;
28+ use stdx:: never;
2829use syntax:: {
2930 ast:: { self , HasName } ,
3031 AstNode , SyntaxKind , TextRange , T ,
@@ -187,13 +188,20 @@ fn rename_mod(
187188 source_change. push_file_system_edit ( move_file) ;
188189 }
189190
190- if let Some ( InFile { file_id, value : _ } ) = module. declaration_source ( sema. db ) {
191- let file_id = file_id. original_file ( sema. db ) ;
192- if let Some ( file_range) = Definition :: Module ( module) . range_for_rename ( sema) {
193- source_change. insert_source_edit (
194- file_id,
195- TextEdit :: replace ( file_range. range , new_name. to_string ( ) ) ,
196- )
191+ if let Some ( src) = module. declaration_source ( sema. db ) {
192+ let file_id = src. file_id . original_file ( sema. db ) ;
193+ match src. value . name ( ) {
194+ Some ( name) => {
195+ if let Some ( file_range) =
196+ src. with_value ( name. syntax ( ) ) . original_file_range_opt ( sema. db )
197+ {
198+ source_change. insert_source_edit (
199+ file_id,
200+ TextEdit :: replace ( file_range. range , new_name. to_string ( ) ) ,
201+ )
202+ } ;
203+ }
204+ _ => never ! ( "Module source node is missing a name" ) ,
197205 }
198206 }
199207
0 commit comments