From 191b1d238fd1594ab74b1ab6a17dbe0430fc6b1a Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 24 Nov 2019 21:03:24 +0300 Subject: Remove impl_block module --- crates/ra_hir/src/code_model.rs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'crates/ra_hir/src/code_model.rs') diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs index 263c557f3..96a5cc857 100644 --- a/crates/ra_hir/src/code_model.rs +++ b/crates/ra_hir/src/code_model.rs @@ -973,6 +973,41 @@ pub struct ImplBlock { pub(crate) id: ImplId, } +impl ImplBlock { + pub fn target_trait(&self, db: &impl DefDatabase) -> Option { + db.impl_data(self.id).target_trait.clone() + } + + pub fn target_type(&self, db: &impl DefDatabase) -> TypeRef { + db.impl_data(self.id).target_type.clone() + } + + pub fn target_ty(&self, db: &impl HirDatabase) -> Ty { + Ty::from_hir(db, &self.id.resolver(db), &self.target_type(db)) + } + + pub fn target_trait_ref(&self, db: &impl HirDatabase) -> Option { + let target_ty = self.target_ty(db); + TraitRef::from_hir(db, &self.id.resolver(db), &self.target_trait(db)?, Some(target_ty)) + } + + pub fn items(&self, db: &impl DefDatabase) -> Vec { + db.impl_data(self.id).items.iter().map(|it| (*it).into()).collect() + } + + pub fn is_negative(&self, db: &impl DefDatabase) -> bool { + db.impl_data(self.id).is_negative + } + + pub fn module(&self, db: &impl DefDatabase) -> Module { + self.id.module(db).into() + } + + pub fn krate(&self, db: &impl DefDatabase) -> Crate { + Crate { crate_id: self.module(db).id.krate } + } +} + /// For IDE only pub enum ScopeDef { ModuleDef(ModuleDef), -- cgit v1.2.3