Fix scip crate symbol name

This commit is contained in:
David Richey 2025-01-27 23:10:05 -06:00
parent 50172919a6
commit a329b6ac2c

View file

@ -289,7 +289,10 @@ fn def_to_non_local_moniker(
definition: Definition, definition: Definition,
from_crate: Crate, from_crate: Crate,
) -> Option<Moniker> { ) -> Option<Moniker> {
let module = definition.module(db)?; let module = match definition {
Definition::Module(module) if module.is_crate_root() => module,
_ => definition.module(db)?,
};
let krate = module.krate(); let krate = module.krate();
let edition = krate.edition(db); let edition = krate.edition(db);
@ -322,12 +325,18 @@ fn def_to_non_local_moniker(
name: name.display(db, edition).to_string(), name: name.display(db, edition).to_string(),
desc: def_to_kind(db, def).into(), desc: def_to_kind(db, def).into(),
}); });
} else if reverse_description.is_empty() {
// Don't allow the last descriptor to be absent.
return None;
} else { } else {
match def { match def {
Definition::Module(module) if module.is_crate_root() => {} Definition::Module(module) if module.is_crate_root() => {
// only include `crate` namespace by itself because we prefer
// `rust-analyzer cargo foo . bar/` over `rust-analyzer cargo foo . crate/bar/`
if reverse_description.is_empty() {
reverse_description.push(MonikerDescriptor {
name: "crate".to_owned(),
desc: MonikerDescriptorKind::Namespace,
});
}
}
_ => { _ => {
tracing::error!(?def, "Encountered enclosing definition with no name"); tracing::error!(?def, "Encountered enclosing definition with no name");
} }
@ -340,6 +349,9 @@ fn def_to_non_local_moniker(
}; };
def = next_def; def = next_def;
} }
if reverse_description.is_empty() {
return None;
}
reverse_description.reverse(); reverse_description.reverse();
let description = reverse_description; let description = reverse_description;