Encode edition within FileId in the hir layer

This commit is contained in:
Lukas Wirth 2024-07-17 17:35:40 +02:00
parent 92268627a8
commit 5264f86242
160 changed files with 1117 additions and 824 deletions

View file

@ -22,10 +22,10 @@
//! Our current behavior is ¯\_(ツ)_/¯.
use std::fmt;
use base_db::{AnchoredPathBuf, FileId, FileRange};
use base_db::AnchoredPathBuf;
use either::Either;
use hir::{FieldSource, HirFileIdExt, InFile, ModuleSource, Semantics};
use span::{Edition, SyntaxContextId};
use hir::{FieldSource, FileRange, HirFileIdExt, InFile, ModuleSource, Semantics};
use span::{Edition, EditionedFileId, FileId, SyntaxContextId};
use stdx::{never, TupleExt};
use syntax::{
ast::{self, HasName},
@ -241,7 +241,7 @@ fn rename_mod(
let InFile { file_id, value: def_source } = module.definition_source(sema.db);
if let ModuleSource::SourceFile(..) = def_source {
let new_name = new_name.trim_start_matches("r#");
let anchor = file_id.original_file(sema.db);
let anchor = file_id.original_file(sema.db).file_id();
let is_mod_rs = module.is_mod_rs(sema.db);
let has_detached_child = module.children(sema.db).any(|child| !child.is_inline(sema.db));
@ -290,7 +290,7 @@ fn rename_mod(
.map(TupleExt::head)
{
source_change.insert_source_edit(
file_id,
file_id.file_id(),
TextEdit::replace(file_range.range, new_name.to_owned()),
)
};
@ -301,8 +301,8 @@ fn rename_mod(
let def = Definition::Module(module);
let usages = def.usages(sema).all();
let ref_edits = usages.iter().map(|(&file_id, references)| {
(file_id, source_edit_from_references(references, def, new_name))
let ref_edits = usages.iter().map(|(file_id, references)| {
(EditionedFileId::file_id(file_id), source_edit_from_references(references, def, new_name))
});
source_change.extend(ref_edits);
@ -350,8 +350,8 @@ fn rename_reference(
bail!("Cannot rename reference to `_` as it is being referenced multiple times");
}
let mut source_change = SourceChange::default();
source_change.extend(usages.iter().map(|(&file_id, references)| {
(file_id, source_edit_from_references(references, def, new_name))
source_change.extend(usages.iter().map(|(file_id, references)| {
(EditionedFileId::file_id(file_id), source_edit_from_references(references, def, new_name))
}));
let mut insert_def_edit = |def| {
@ -584,7 +584,7 @@ fn source_edit_from_def(
}
}
let Some(file_id) = file_id else { bail!("No file available to rename") };
return Ok((file_id, edit.finish()));
return Ok((EditionedFileId::file_id(file_id), edit.finish()));
}
let FileRange { file_id, range } = def
.range_for_rename(sema)
@ -600,7 +600,7 @@ fn source_edit_from_def(
_ => (range, new_name.to_owned()),
};
edit.replace(range, new_name);
Ok((file_id, edit.finish()))
Ok((file_id.file_id(), edit.finish()))
}
#[derive(Copy, Clone, Debug, PartialEq)]