Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/find_path.rs')
-rw-r--r--crates/hir-def/src/find_path.rs11
1 files changed, 6 insertions, 5 deletions
diff --git a/crates/hir-def/src/find_path.rs b/crates/hir-def/src/find_path.rs
index 69c7794327..9d62d9ce65 100644
--- a/crates/hir-def/src/find_path.rs
+++ b/crates/hir-def/src/find_path.rs
@@ -5,6 +5,7 @@ use std::{cell::Cell, cmp::Ordering, iter};
use base_db::{Crate, CrateOrigin, LangCrateOrigin};
use hir_expand::{
Lookup,
+ mod_path::{ModPath, PathKind},
name::{AsName, Name},
};
use intern::sym;
@@ -15,7 +16,6 @@ use crate::{
db::DefDatabase,
item_scope::ItemInNs,
nameres::DefMap,
- path::{ModPath, PathKind},
visibility::{Visibility, VisibilityExplicitness},
};
@@ -134,10 +134,11 @@ fn find_path_inner(ctx: &FindPathCtx<'_>, item: ItemInNs, max_len: usize) -> Opt
if let Some(ModuleDefId::EnumVariantId(variant)) = item.as_module_def_id() {
// - if the item is an enum variant, refer to it via the enum
- if let Some(mut path) =
- find_path_inner(ctx, ItemInNs::Types(variant.lookup(ctx.db).parent.into()), max_len)
- {
- path.push_segment(ctx.db.enum_variant_data(variant).name.clone());
+ let loc = variant.lookup(ctx.db);
+ if let Some(mut path) = find_path_inner(ctx, ItemInNs::Types(loc.parent.into()), max_len) {
+ path.push_segment(
+ ctx.db.enum_variants(loc.parent).variants[loc.index as usize].1.clone(),
+ );
return Some(path);
}
// If this doesn't work, it seems we have no way of referring to the