Trait location draft

This commit is contained in:
Kirill Bulatov 2020-02-11 15:21:12 +02:00
parent 9b6db7bbd4
commit 8f959f20ee
2 changed files with 127 additions and 20 deletions

View file

@ -123,7 +123,7 @@ impl_froms!(
);
pub use hir_def::{
attr::Attrs, item_scope::ItemInNs, visibility::Visibility, AssocItemId, AssocItemLoc,
attr::Attrs, item_scope::ItemInNs, visibility::Visibility, AssocContainerId, AssocItemId,
};
use rustc_hash::FxHashSet;
@ -696,16 +696,12 @@ impl AssocItem {
AssocItem::TypeAlias(t) => t.module(db),
}
}
pub fn container(self, db: &impl DefDatabase) -> AssocItemContainer {
let container = match self {
AssocItem::Function(it) => it.id.lookup(db).container,
AssocItem::Const(it) => it.id.lookup(db).container,
AssocItem::TypeAlias(it) => it.id.lookup(db).container,
};
match container {
AssocContainerId::TraitId(id) => AssocItemContainer::Trait(id.into()),
AssocContainerId::ImplId(id) => AssocItemContainer::ImplBlock(id.into()),
AssocContainerId::ContainerId(_) => panic!("invalid AssocItem"),
pub fn container(self, db: &impl DefDatabase) -> AssocContainerId {
match self {
AssocItem::Function(f) => f.id.lookup(db).container,
AssocItem::Const(c) => c.id.lookup(db).container,
AssocItem::TypeAlias(t) => t.id.lookup(db).container,
}
}
}