Remove obsolete RangeInfo usage in rename

This commit is contained in:
Lukas Wirth 2021-01-18 20:25:40 +01:00
parent 39282ec419
commit 21a6384ce6
4 changed files with 151 additions and 169 deletions

View file

@ -140,7 +140,7 @@ impl DiagnosticWithFix for IncorrectCase {
rename_with_semantics(sema, file_position, &self.suggested_text).ok()?; rename_with_semantics(sema, file_position, &self.suggested_text).ok()?;
let label = format!("Rename to {}", self.suggested_text); let label = format!("Rename to {}", self.suggested_text);
Some(Fix::new(&label, rename_changes.info, frange.range)) Some(Fix::new(&label, rename_changes, frange.range))
} }
} }

View file

@ -520,7 +520,7 @@ impl Analysis {
&self, &self,
position: FilePosition, position: FilePosition,
new_name: &str, new_name: &str,
) -> Cancelable<Result<RangeInfo<SourceChange>, RenameError>> { ) -> Cancelable<Result<SourceChange, RenameError>> {
self.with_db(|db| references::rename::rename(db, position, new_name)) self.with_db(|db| references::rename::rename(db, position, new_name))
} }

View file

@ -63,7 +63,7 @@ pub(crate) fn rename(
db: &RootDatabase, db: &RootDatabase,
position: FilePosition, position: FilePosition,
new_name: &str, new_name: &str,
) -> RenameResult<RangeInfo<SourceChange>> { ) -> RenameResult<SourceChange> {
let sema = Semantics::new(db); let sema = Semantics::new(db);
rename_with_semantics(&sema, position, new_name) rename_with_semantics(&sema, position, new_name)
} }
@ -72,7 +72,7 @@ pub(crate) fn rename_with_semantics(
sema: &Semantics<RootDatabase>, sema: &Semantics<RootDatabase>,
position: FilePosition, position: FilePosition,
new_name: &str, new_name: &str,
) -> RenameResult<RangeInfo<SourceChange>> { ) -> RenameResult<SourceChange> {
let source_file = sema.parse(position.file_id); let source_file = sema.parse(position.file_id);
let syntax = source_file.syntax(); let syntax = source_file.syntax();
@ -91,7 +91,7 @@ pub(crate) fn will_rename_file(
) -> Option<SourceChange> { ) -> Option<SourceChange> {
let sema = Semantics::new(db); let sema = Semantics::new(db);
let module = sema.to_module_def(file_id)?; let module = sema.to_module_def(file_id)?;
let mut change = rename_mod(&sema, module, new_name_stem).ok()?.info; let mut change = rename_mod(&sema, module, new_name_stem).ok()?;
change.file_system_edits.clear(); change.file_system_edits.clear();
Some(change) Some(change)
} }
@ -243,7 +243,7 @@ fn rename_mod(
sema: &Semantics<RootDatabase>, sema: &Semantics<RootDatabase>,
module: Module, module: Module,
new_name: &str, new_name: &str,
) -> RenameResult<RangeInfo<SourceChange>> { ) -> RenameResult<SourceChange> {
if IdentifierKind::Ident != check_identifier(new_name)? { if IdentifierKind::Ident != check_identifier(new_name)? {
bail!("Invalid name `{0}`: cannot rename module to {0}", new_name); bail!("Invalid name `{0}`: cannot rename module to {0}", new_name);
} }
@ -281,13 +281,10 @@ fn rename_mod(
}); });
source_change.extend(ref_edits); source_change.extend(ref_edits);
Ok(RangeInfo::new(TextRange::default(), source_change)) Ok(source_change)
} }
fn rename_to_self( fn rename_to_self(sema: &Semantics<RootDatabase>, local: hir::Local) -> RenameResult<SourceChange> {
sema: &Semantics<RootDatabase>,
local: hir::Local,
) -> RenameResult<RangeInfo<SourceChange>> {
if assert_never!(local.is_self(sema.db)) { if assert_never!(local.is_self(sema.db)) {
bail!("rename_to_self invoked on self"); bail!("rename_to_self invoked on self");
} }
@ -356,7 +353,7 @@ fn rename_to_self(
TextEdit::replace(first_param_range, String::from(self_param)), TextEdit::replace(first_param_range, String::from(self_param)),
); );
Ok(RangeInfo::new(TextRange::default(), source_change)) Ok(source_change)
} }
fn text_edit_from_self_param(self_param: &ast::SelfParam, new_name: &str) -> Option<TextEdit> { fn text_edit_from_self_param(self_param: &ast::SelfParam, new_name: &str) -> Option<TextEdit> {
@ -387,7 +384,7 @@ fn rename_self_to_param(
local: hir::Local, local: hir::Local,
new_name: &str, new_name: &str,
identifier_kind: IdentifierKind, identifier_kind: IdentifierKind,
) -> RenameResult<RangeInfo<SourceChange>> { ) -> RenameResult<SourceChange> {
let (file_id, self_param) = match local.source(sema.db) { let (file_id, self_param) = match local.source(sema.db) {
InFile { file_id, value: Either::Right(self_param) } => (file_id, self_param), InFile { file_id, value: Either::Right(self_param) } => (file_id, self_param),
_ => { _ => {
@ -408,14 +405,14 @@ fn rename_self_to_param(
source_change.extend(usages.iter().map(|(&file_id, references)| { source_change.extend(usages.iter().map(|(&file_id, references)| {
source_edit_from_references(sema, file_id, &references, new_name) source_edit_from_references(sema, file_id, &references, new_name)
})); }));
Ok(RangeInfo::new(TextRange::default(), source_change)) Ok(source_change)
} }
fn rename_reference( fn rename_reference(
sema: &Semantics<RootDatabase>, sema: &Semantics<RootDatabase>,
def: Definition, def: Definition,
new_name: &str, new_name: &str,
) -> RenameResult<RangeInfo<SourceChange>> { ) -> RenameResult<SourceChange> {
let ident_kind = check_identifier(new_name)?; let ident_kind = check_identifier(new_name)?;
let def_is_lbl_or_lt = matches!(def, let def_is_lbl_or_lt = matches!(def,
@ -439,7 +436,7 @@ fn rename_reference(
(IdentifierKind::ToSelf, Definition::Local(local)) if local.is_self(sema.db) => { (IdentifierKind::ToSelf, Definition::Local(local)) if local.is_self(sema.db) => {
// no-op // no-op
mark::hit!(rename_self_to_self); mark::hit!(rename_self_to_self);
return Ok(RangeInfo::new(TextRange::default(), SourceChange::default())); return Ok(SourceChange::default());
} }
(ident_kind, Definition::Local(local)) if local.is_self(sema.db) => { (ident_kind, Definition::Local(local)) if local.is_self(sema.db) => {
mark::hit!(rename_self_to_param); mark::hit!(rename_self_to_param);
@ -465,7 +462,7 @@ fn rename_reference(
let (file_id, edit) = source_edit_from_def(sema, def, new_name)?; let (file_id, edit) = source_edit_from_def(sema, def, new_name)?;
source_change.insert_source_edit(file_id, edit); source_change.insert_source_edit(file_id, edit);
Ok(RangeInfo::new(TextRange::default(), source_change)) Ok(source_change)
} }
fn source_edit_from_def( fn source_edit_from_def(
@ -518,7 +515,7 @@ mod tests {
Ok(source_change) => { Ok(source_change) => {
let mut text_edit_builder = TextEdit::builder(); let mut text_edit_builder = TextEdit::builder();
let mut file_id: Option<FileId> = None; let mut file_id: Option<FileId> = None;
for edit in source_change.info.source_file_edits { for edit in source_change.source_file_edits {
file_id = Some(edit.0); file_id = Some(edit.0);
for indel in edit.1.into_iter() { for indel in edit.1.into_iter() {
text_edit_builder.replace(indel.delete, indel.insert); text_edit_builder.replace(indel.delete, indel.insert);
@ -917,9 +914,7 @@ mod foo$0;
// empty // empty
"#, "#,
expect![[r#" expect![[r#"
RangeInfo { SourceChange {
range: 0..0,
info: SourceChange {
source_file_edits: { source_file_edits: {
FileId( FileId(
1, 1,
@ -946,7 +941,6 @@ mod foo$0;
}, },
], ],
is_snippet: false, is_snippet: false,
},
} }
"#]], "#]],
); );
@ -969,9 +963,7 @@ pub struct FooContent;
use crate::foo$0::FooContent; use crate::foo$0::FooContent;
"#, "#,
expect![[r#" expect![[r#"
RangeInfo { SourceChange {
range: 0..0,
info: SourceChange {
source_file_edits: { source_file_edits: {
FileId( FileId(
0, 0,
@ -1008,7 +1000,6 @@ use crate::foo$0::FooContent;
}, },
], ],
is_snippet: false, is_snippet: false,
},
} }
"#]], "#]],
); );
@ -1025,9 +1016,7 @@ mod fo$0o;
// empty // empty
"#, "#,
expect![[r#" expect![[r#"
RangeInfo { SourceChange {
range: 0..0,
info: SourceChange {
source_file_edits: { source_file_edits: {
FileId( FileId(
0, 0,
@ -1054,7 +1043,6 @@ mod fo$0o;
}, },
], ],
is_snippet: false, is_snippet: false,
},
} }
"#]], "#]],
); );
@ -1072,9 +1060,7 @@ mod outer { mod fo$0o; }
// empty // empty
"#, "#,
expect![[r#" expect![[r#"
RangeInfo { SourceChange {
range: 0..0,
info: SourceChange {
source_file_edits: { source_file_edits: {
FileId( FileId(
0, 0,
@ -1101,7 +1087,6 @@ mod outer { mod fo$0o; }
}, },
], ],
is_snippet: false, is_snippet: false,
},
} }
"#]], "#]],
); );
@ -1142,9 +1127,7 @@ pub mod foo$0;
// pub fn fun() {} // pub fn fun() {}
"#, "#,
expect![[r#" expect![[r#"
RangeInfo { SourceChange {
range: 0..0,
info: SourceChange {
source_file_edits: { source_file_edits: {
FileId( FileId(
0, 0,
@ -1181,7 +1164,6 @@ pub mod foo$0;
}, },
], ],
is_snippet: false, is_snippet: false,
},
} }
"#]], "#]],
); );

View file

@ -809,7 +809,7 @@ pub(crate) fn handle_rename(
let change = let change =
snap.analysis.rename(position, &*params.new_name)?.map_err(to_proto::rename_error)?; snap.analysis.rename(position, &*params.new_name)?.map_err(to_proto::rename_error)?;
let workspace_edit = to_proto::workspace_edit(&snap, change.info)?; let workspace_edit = to_proto::workspace_edit(&snap, change)?;
Ok(Some(workspace_edit)) Ok(Some(workspace_edit))
} }