mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 04:19:13 +00:00
Allow navigation targets to be duplicated when the focus range lies in the macro definition site
This commit is contained in:
parent
9b7ec5e31b
commit
9cb13b6efb
38 changed files with 851 additions and 488 deletions
|
@ -135,7 +135,7 @@ impl ChangeFixture {
|
|||
|
||||
let mut file_set = FileSet::default();
|
||||
let mut current_source_root_kind = SourceRootKind::Local;
|
||||
let mut file_id = FileId(0);
|
||||
let mut file_id = FileId::from_raw(0);
|
||||
let mut roots = Vec::new();
|
||||
|
||||
let mut file_position = None;
|
||||
|
@ -210,7 +210,7 @@ impl ChangeFixture {
|
|||
let path = VfsPath::new_virtual_path(meta.path);
|
||||
file_set.insert(file_id, path);
|
||||
files.push(file_id);
|
||||
file_id.0 += 1;
|
||||
file_id = FileId::from_raw(file_id.index() + 1);
|
||||
}
|
||||
|
||||
if crates.is_empty() {
|
||||
|
@ -255,7 +255,7 @@ impl ChangeFixture {
|
|||
|
||||
if let Some(mini_core) = mini_core {
|
||||
let core_file = file_id;
|
||||
file_id.0 += 1;
|
||||
file_id = FileId::from_raw(file_id.index() + 1);
|
||||
|
||||
let mut fs = FileSet::default();
|
||||
fs.insert(core_file, VfsPath::new_virtual_path("/sysroot/core/lib.rs".to_string()));
|
||||
|
@ -296,7 +296,6 @@ impl ChangeFixture {
|
|||
let mut proc_macros = ProcMacros::default();
|
||||
if !proc_macro_names.is_empty() {
|
||||
let proc_lib_file = file_id;
|
||||
file_id.0 += 1;
|
||||
|
||||
proc_macro_defs.extend(default_test_proc_macros());
|
||||
let (proc_macro, source) = filter_test_proc_macros(&proc_macro_names, proc_macro_defs);
|
||||
|
|
|
@ -880,7 +880,7 @@ mod tests {
|
|||
fn detect_cyclic_dependency_indirect() {
|
||||
let mut graph = CrateGraph::default();
|
||||
let crate1 = graph.add_crate_root(
|
||||
FileId(1u32),
|
||||
FileId::from_raw(1u32),
|
||||
Edition2018,
|
||||
None,
|
||||
None,
|
||||
|
@ -893,7 +893,7 @@ mod tests {
|
|||
None,
|
||||
);
|
||||
let crate2 = graph.add_crate_root(
|
||||
FileId(2u32),
|
||||
FileId::from_raw(2u32),
|
||||
Edition2018,
|
||||
None,
|
||||
None,
|
||||
|
@ -906,7 +906,7 @@ mod tests {
|
|||
None,
|
||||
);
|
||||
let crate3 = graph.add_crate_root(
|
||||
FileId(3u32),
|
||||
FileId::from_raw(3u32),
|
||||
Edition2018,
|
||||
None,
|
||||
None,
|
||||
|
@ -942,7 +942,7 @@ mod tests {
|
|||
fn detect_cyclic_dependency_direct() {
|
||||
let mut graph = CrateGraph::default();
|
||||
let crate1 = graph.add_crate_root(
|
||||
FileId(1u32),
|
||||
FileId::from_raw(1u32),
|
||||
Edition2018,
|
||||
None,
|
||||
None,
|
||||
|
@ -955,7 +955,7 @@ mod tests {
|
|||
None,
|
||||
);
|
||||
let crate2 = graph.add_crate_root(
|
||||
FileId(2u32),
|
||||
FileId::from_raw(2u32),
|
||||
Edition2018,
|
||||
None,
|
||||
None,
|
||||
|
@ -985,7 +985,7 @@ mod tests {
|
|||
fn it_works() {
|
||||
let mut graph = CrateGraph::default();
|
||||
let crate1 = graph.add_crate_root(
|
||||
FileId(1u32),
|
||||
FileId::from_raw(1u32),
|
||||
Edition2018,
|
||||
None,
|
||||
None,
|
||||
|
@ -998,7 +998,7 @@ mod tests {
|
|||
None,
|
||||
);
|
||||
let crate2 = graph.add_crate_root(
|
||||
FileId(2u32),
|
||||
FileId::from_raw(2u32),
|
||||
Edition2018,
|
||||
None,
|
||||
None,
|
||||
|
@ -1011,7 +1011,7 @@ mod tests {
|
|||
None,
|
||||
);
|
||||
let crate3 = graph.add_crate_root(
|
||||
FileId(3u32),
|
||||
FileId::from_raw(3u32),
|
||||
Edition2018,
|
||||
None,
|
||||
None,
|
||||
|
@ -1041,7 +1041,7 @@ mod tests {
|
|||
fn dashes_are_normalized() {
|
||||
let mut graph = CrateGraph::default();
|
||||
let crate1 = graph.add_crate_root(
|
||||
FileId(1u32),
|
||||
FileId::from_raw(1u32),
|
||||
Edition2018,
|
||||
None,
|
||||
None,
|
||||
|
@ -1054,7 +1054,7 @@ mod tests {
|
|||
None,
|
||||
);
|
||||
let crate2 = graph.add_crate_root(
|
||||
FileId(2u32),
|
||||
FileId::from_raw(2u32),
|
||||
Edition2018,
|
||||
None,
|
||||
None,
|
||||
|
|
|
@ -70,7 +70,7 @@ impl fmt::Debug for SpanAnchor {
|
|||
}
|
||||
|
||||
impl tt::SpanAnchor for SpanAnchor {
|
||||
const DUMMY: Self = SpanAnchor { file_id: FileId(0), ast_id: ROOT_ERASED_FILE_AST_ID };
|
||||
const DUMMY: Self = SpanAnchor { file_id: FileId::BOGUS, ast_id: ROOT_ERASED_FILE_AST_ID };
|
||||
}
|
||||
|
||||
/// Input to the analyzer is a set of files, where each file is identified by
|
||||
|
@ -99,12 +99,6 @@ impl From<HirFileId> for u32 {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<u32> for HirFileId {
|
||||
fn from(value: u32) -> Self {
|
||||
HirFileId(value)
|
||||
}
|
||||
}
|
||||
|
||||
impl From<MacroCallId> for HirFileId {
|
||||
fn from(value: MacroCallId) -> Self {
|
||||
value.as_file()
|
||||
|
@ -147,7 +141,7 @@ pub enum HirFileIdRepr {
|
|||
impl fmt::Debug for HirFileIdRepr {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
match self {
|
||||
Self::FileId(arg0) => f.debug_tuple("FileId").field(&arg0.0).finish(),
|
||||
Self::FileId(arg0) => f.debug_tuple("FileId").field(&arg0.index()).finish(),
|
||||
Self::MacroFile(arg0) => {
|
||||
f.debug_tuple("MacroFile").field(&arg0.macro_call_id.0).finish()
|
||||
}
|
||||
|
@ -156,9 +150,9 @@ impl fmt::Debug for HirFileIdRepr {
|
|||
}
|
||||
|
||||
impl From<FileId> for HirFileId {
|
||||
fn from(FileId(id): FileId) -> Self {
|
||||
assert!(id < Self::MAX_FILE_ID);
|
||||
HirFileId(id)
|
||||
fn from(id: FileId) -> Self {
|
||||
assert!(id.index() < Self::MAX_FILE_ID);
|
||||
HirFileId(id.index())
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -192,7 +186,7 @@ impl HirFileId {
|
|||
#[inline]
|
||||
pub fn file_id(self) -> Option<FileId> {
|
||||
match self.0 & Self::MACRO_FILE_TAG_MASK {
|
||||
0 => Some(FileId(self.0)),
|
||||
0 => Some(FileId::from_raw(self.0)),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
@ -200,7 +194,7 @@ impl HirFileId {
|
|||
#[inline]
|
||||
pub fn repr(self) -> HirFileIdRepr {
|
||||
match self.0 & Self::MACRO_FILE_TAG_MASK {
|
||||
0 => HirFileIdRepr::FileId(FileId(self.0)),
|
||||
0 => HirFileIdRepr::FileId(FileId::from_raw(self.0)),
|
||||
_ => HirFileIdRepr::MacroFile(MacroFileId {
|
||||
macro_call_id: MacroCallId(InternId::from(self.0 ^ Self::MACRO_FILE_TAG_MASK)),
|
||||
}),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue