Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-db/src/rename.rs')
| -rw-r--r-- | crates/ide-db/src/rename.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/crates/ide-db/src/rename.rs b/crates/ide-db/src/rename.rs index aa0bb7cce6..27add0ad37 100644 --- a/crates/ide-db/src/rename.rs +++ b/crates/ide-db/src/rename.rs @@ -22,7 +22,7 @@ //! Our current behavior is ¯\_(ツ)_/¯. use std::fmt; -use base_db::{AnchoredPathBuf, FileId, FileRange}; +use base_db::{AnchoredPathBuf, CrateOrigin, FileId, FileRange}; use either::Either; use hir::{FieldSource, HasSource, InFile, ModuleSource, Semantics}; use stdx::never; @@ -77,6 +77,15 @@ impl Definition { bail!("Cannot rename builtin type") } Definition::SelfType(_) => bail!("Cannot rename `Self`"), + Definition::Adt(hir::Adt::Struct(strukt)) => { + if !matches!( + strukt.module(sema.db).krate().origin(sema.db), + CrateOrigin::Local { .. } + ) { + bail!("Cannot rename a non-local struct.") + } + rename_reference(sema, Definition::Adt(hir::Adt::Struct(strukt)), new_name) + } def => rename_reference(sema, def, new_name), } } |