@@ -71,20 +71,24 @@ impl Definition {
7171 sema : & Semantics < ' _ , RootDatabase > ,
7272 new_name : & str ,
7373 ) -> Result < SourceChange > {
74+ if let Some ( krate) = self . krate ( sema. db ) {
75+ if !matches ! ( krate. origin( sema. db) , CrateOrigin :: Local { .. } ) {
76+ bail ! ( "Cannot rename a non-local definition." )
77+ }
78+ }
79+
7480 match * self {
7581 Definition :: Module ( module) => rename_mod ( sema, module, new_name) ,
7682 Definition :: BuiltinType ( _) => {
7783 bail ! ( "Cannot rename builtin type" )
7884 }
7985 Definition :: SelfType ( _) => bail ! ( "Cannot rename `Self`" ) ,
80- Definition :: Adt ( hir:: Adt :: Struct ( strukt) ) => {
81- if !matches ! (
82- strukt. module( sema. db) . krate( ) . origin( sema. db) ,
83- CrateOrigin :: Local { .. }
84- ) {
85- bail ! ( "Cannot rename a non-local struct." )
86+ Definition :: Macro ( mac) => {
87+ if mac. is_builtin_derive ( sema. db ) {
88+ bail ! ( "Cannot rename builtin macro" )
8689 }
87- rename_reference ( sema, Definition :: Adt ( hir:: Adt :: Struct ( strukt) ) , new_name)
90+
91+ rename_reference ( sema, Definition :: Macro ( mac) , new_name)
8892 }
8993 def => rename_reference ( sema, def, new_name) ,
9094 }
0 commit comments