From da7056245d9b59a4b3af7266dd271bab58cb6527 Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Sat, 16 Feb 2019 21:19:24 +0100 Subject: Add generic params to impl blocks --- crates/ra_hir/src/impl_block.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'crates/ra_hir/src/impl_block.rs') diff --git a/crates/ra_hir/src/impl_block.rs b/crates/ra_hir/src/impl_block.rs index 4d8bdf33a..7d862882d 100644 --- a/crates/ra_hir/src/impl_block.rs +++ b/crates/ra_hir/src/impl_block.rs @@ -13,7 +13,7 @@ use crate::{ type_ref::TypeRef, ids::LocationCtx, resolve::Resolver, - ty::Ty, + ty::Ty, generics::GenericParams }; use crate::code_model_api::{Module, ModuleSource}; @@ -38,7 +38,7 @@ impl ImplSourceMap { } } -#[derive(Debug, Clone, Copy, PartialEq, Eq)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub struct ImplBlock { module: Module, impl_id: ImplId, @@ -58,7 +58,7 @@ impl ImplBlock { } /// Returns the syntax of the impl block - pub fn source(&self, db: &impl HirDatabase) -> (HirFileId, TreeArc) { + pub fn source(&self, db: &impl PersistentHirDatabase) -> (HirFileId, TreeArc) { let source_map = db.impls_in_module_source_map(self.module); let (file_id, source) = self.module.definition_source(db); (file_id, source_map.get(&source, self.impl_id)) @@ -72,11 +72,11 @@ impl ImplBlock { self.module } - pub fn target_trait_ref(&self, db: &impl HirDatabase) -> Option { + pub fn target_trait_ref(&self, db: &impl PersistentHirDatabase) -> Option { db.impls_in_module(self.module).impls[self.impl_id].target_trait().cloned() } - pub fn target_type(&self, db: &impl HirDatabase) -> TypeRef { + pub fn target_type(&self, db: &impl PersistentHirDatabase) -> TypeRef { db.impls_in_module(self.module).impls[self.impl_id].target_type().clone() } @@ -96,10 +96,14 @@ impl ImplBlock { None } - pub fn items(&self, db: &impl HirDatabase) -> Vec { + pub fn items(&self, db: &impl PersistentHirDatabase) -> Vec { db.impls_in_module(self.module).impls[self.impl_id].items().to_vec() } + pub fn generic_params(&self, db: &impl PersistentHirDatabase) -> Arc { + db.generic_params((*self).into()) + } + pub fn resolver(&self, db: &impl HirDatabase) -> Resolver { let r = self.module().resolver(db); // TODO: add generics -- cgit v1.2.3