aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/ra_hir/src/code_model.rs13
-rw-r--r--crates/ra_hir/src/ty/method_resolution.rs2
2 files changed, 5 insertions, 10 deletions
diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs
index af07b2c4d..9f8c6c4a5 100644
--- a/crates/ra_hir/src/code_model.rs
+++ b/crates/ra_hir/src/code_model.rs
@@ -10,7 +10,6 @@ use hir_def::{
10 adt::VariantData, 10 adt::VariantData,
11 body::scope::ExprScopes, 11 body::scope::ExprScopes,
12 builtin_type::BuiltinType, 12 builtin_type::BuiltinType,
13 data::TraitData,
14 nameres::per_ns::PerNs, 13 nameres::per_ns::PerNs,
15 resolver::{HasResolver, TypeNs}, 14 resolver::{HasResolver, TypeNs},
16 type_ref::TypeRef, 15 type_ref::TypeRef,
@@ -707,11 +706,11 @@ impl Trait {
707 } 706 }
708 707
709 pub fn name(self, db: &impl DefDatabase) -> Option<Name> { 708 pub fn name(self, db: &impl DefDatabase) -> Option<Name> {
710 self.trait_data(db).name.clone() 709 db.trait_data(self.id).name.clone()
711 } 710 }
712 711
713 pub fn items(self, db: &impl DefDatabase) -> Vec<AssocItem> { 712 pub fn items(self, db: &impl DefDatabase) -> Vec<AssocItem> {
714 self.trait_data(db).items.iter().map(|it| (*it).into()).collect() 713 db.trait_data(self.id).items.iter().map(|it| (*it).into()).collect()
715 } 714 }
716 715
717 fn direct_super_traits(self, db: &impl HirDatabase) -> Vec<Trait> { 716 fn direct_super_traits(self, db: &impl HirDatabase) -> Vec<Trait> {
@@ -757,7 +756,7 @@ impl Trait {
757 } 756 }
758 757
759 pub fn associated_type_by_name(self, db: &impl DefDatabase, name: &Name) -> Option<TypeAlias> { 758 pub fn associated_type_by_name(self, db: &impl DefDatabase, name: &Name) -> Option<TypeAlias> {
760 let trait_data = self.trait_data(db); 759 let trait_data = db.trait_data(self.id);
761 let res = 760 let res =
762 trait_data.associated_types().map(TypeAlias::from).find(|t| &t.name(db) == name)?; 761 trait_data.associated_types().map(TypeAlias::from).find(|t| &t.name(db) == name)?;
763 Some(res) 762 Some(res)
@@ -771,16 +770,12 @@ impl Trait {
771 self.all_super_traits(db).into_iter().find_map(|t| t.associated_type_by_name(db, name)) 770 self.all_super_traits(db).into_iter().find_map(|t| t.associated_type_by_name(db, name))
772 } 771 }
773 772
774 pub(crate) fn trait_data(self, db: &impl DefDatabase) -> Arc<TraitData> {
775 db.trait_data(self.id)
776 }
777
778 pub fn trait_ref(self, db: &impl HirDatabase) -> TraitRef { 773 pub fn trait_ref(self, db: &impl HirDatabase) -> TraitRef {
779 TraitRef::for_trait(db, self) 774 TraitRef::for_trait(db, self)
780 } 775 }
781 776
782 pub fn is_auto(self, db: &impl DefDatabase) -> bool { 777 pub fn is_auto(self, db: &impl DefDatabase) -> bool {
783 self.trait_data(db).auto 778 db.trait_data(self.id).auto
784 } 779 }
785} 780}
786 781
diff --git a/crates/ra_hir/src/ty/method_resolution.rs b/crates/ra_hir/src/ty/method_resolution.rs
index f84aae26e..f61c27218 100644
--- a/crates/ra_hir/src/ty/method_resolution.rs
+++ b/crates/ra_hir/src/ty/method_resolution.rs
@@ -233,7 +233,7 @@ fn iterate_trait_method_candidates<T>(
233 .chain(traits_from_env) 233 .chain(traits_from_env)
234 .chain(resolver.traits_in_scope(db).into_iter().map(Trait::from)); 234 .chain(resolver.traits_in_scope(db).into_iter().map(Trait::from));
235 'traits: for t in traits { 235 'traits: for t in traits {
236 let data = t.trait_data(db); 236 let data = db.trait_data(t.id);
237 237
238 // we'll be lazy about checking whether the type implements the 238 // we'll be lazy about checking whether the type implements the
239 // trait, but if we find out it doesn't, we'll skip the rest of the 239 // trait, but if we find out it doesn't, we'll skip the rest of the