From a1ed53a4f183b5826162eb9e998207b92be9c57f Mon Sep 17 00:00:00 2001 From: Florian Diebold Date: Sun, 31 Mar 2019 20:02:16 +0200 Subject: More trait infrastructure - make it possible to get parent trait from method - add 'obligation' machinery for checking that a type implements a trait (and inferring facts about type variables from that) - handle type parameters of traits (to a certain degree) - improve the hacky implements check to cover enough cases to exercise the handling of traits with type parameters - basic canonicalization (will probably also be done by Chalk) --- crates/ra_hir/src/db.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'crates/ra_hir/src/db.rs') diff --git a/crates/ra_hir/src/db.rs b/crates/ra_hir/src/db.rs index e23e2bb2b..18627bbc2 100644 --- a/crates/ra_hir/src/db.rs +++ b/crates/ra_hir/src/db.rs @@ -53,6 +53,9 @@ pub trait DefDatabase: SourceDatabase { #[salsa::invoke(crate::traits::TraitData::trait_data_query)] fn trait_data(&self, t: Trait) -> Arc; + #[salsa::invoke(crate::traits::TraitItemsIndex::trait_items_index)] + fn trait_items_index(&self, module: Module) -> crate::traits::TraitItemsIndex; + #[salsa::invoke(crate::source_id::AstIdMap::ast_id_map_query)] fn ast_id_map(&self, file_id: HirFileId) -> Arc; @@ -128,8 +131,8 @@ pub trait HirDatabase: DefDatabase { #[salsa::invoke(crate::ty::method_resolution::CrateImplBlocks::impls_in_crate_query)] fn impls_in_crate(&self, krate: Crate) -> Arc; - #[salsa::invoke(crate::ty::method_resolution::implements)] - fn implements(&self, trait_ref: TraitRef) -> bool; + #[salsa::invoke(crate::ty::traits::implements)] + fn implements(&self, trait_ref: TraitRef) -> Option; } #[test] -- cgit v1.2.3