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 +++++++++++++++++++++++++ crates/ra_hir/src/code_model/src.rs | 10 +++++-- crates/ra_hir/src/impl_block.rs | 52 ------------------------------------- crates/ra_hir/src/lib.rs | 1 - 4 files changed, 43 insertions(+), 55 deletions(-) delete mode 100644 crates/ra_hir/src/impl_block.rs (limited to 'crates/ra_hir/src') 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), diff --git a/crates/ra_hir/src/code_model/src.rs b/crates/ra_hir/src/code_model/src.rs index a0e605603..a4e317c20 100644 --- a/crates/ra_hir/src/code_model/src.rs +++ b/crates/ra_hir/src/code_model/src.rs @@ -5,8 +5,8 @@ use hir_expand::either::Either; use ra_syntax::ast; use crate::{ - db::DefDatabase, Const, Enum, EnumVariant, FieldSource, Function, Import, MacroDef, Module, - ModuleSource, Static, Struct, StructField, Trait, TypeAlias, Union, + db::DefDatabase, Const, Enum, EnumVariant, FieldSource, Function, ImplBlock, Import, MacroDef, + Module, ModuleSource, Static, Struct, StructField, Trait, TypeAlias, Union, }; pub use hir_expand::Source; @@ -108,6 +108,12 @@ impl HasSource for MacroDef { Source { file_id: self.id.ast_id.file_id(), value: self.id.ast_id.to_node(db) } } } +impl HasSource for ImplBlock { + type Ast = ast::ImplBlock; + fn source(self, db: &impl DefDatabase) -> Source { + self.id.source(db) + } +} impl HasSource for Import { type Ast = Either; diff --git a/crates/ra_hir/src/impl_block.rs b/crates/ra_hir/src/impl_block.rs deleted file mode 100644 index 334eeebac..000000000 --- a/crates/ra_hir/src/impl_block.rs +++ /dev/null @@ -1,52 +0,0 @@ -//! FIXME: write short doc here - -use hir_def::{resolver::HasResolver, type_ref::TypeRef, AstItemDef}; -use ra_syntax::ast; - -use crate::{ - db::{AstDatabase, DefDatabase, HirDatabase}, - ty::Ty, - AssocItem, Crate, HasSource, ImplBlock, Module, Source, TraitRef, -}; - -impl HasSource for ImplBlock { - type Ast = ast::ImplBlock; - fn source(self, db: &(impl DefDatabase + AstDatabase)) -> Source { - self.id.source(db) - } -} - -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 } - } -} diff --git a/crates/ra_hir/src/lib.rs b/crates/ra_hir/src/lib.rs index 70bba2efb..843ce6a88 100644 --- a/crates/ra_hir/src/lib.rs +++ b/crates/ra_hir/src/lib.rs @@ -32,7 +32,6 @@ pub mod db; pub mod source_binder; mod ty; -mod impl_block; mod expr; pub mod diagnostics; mod util; -- cgit v1.2.3