From bd47e140b6f6f39743d52f72437e6eaa2bfd9de1 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Mon, 4 Jan 2021 15:19:09 +0100 Subject: Show GotoTypeAction for ConstParam --- crates/hir/src/code_model.rs | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'crates/hir/src/code_model.rs') diff --git a/crates/hir/src/code_model.rs b/crates/hir/src/code_model.rs index a2255508e..a7a38d43a 100644 --- a/crates/hir/src/code_model.rs +++ b/crates/hir/src/code_model.rs @@ -1343,6 +1343,12 @@ impl ConstParam { pub fn parent(self, _db: &dyn HirDatabase) -> GenericDef { self.id.parent.into() } + + pub fn ty(self, db: &dyn HirDatabase) -> Type { + let def = self.id.parent; + let krate = def.module(db.upcast()).krate; + Type::new(db, krate, def, db.const_param_ty(self.id)) + } } #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -- cgit v1.2.3 From 54b9b03ca2e90083fd1d1fe199c5dde595423b53 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Mon, 4 Jan 2021 15:44:19 +0100 Subject: Show GotoTypeAction for TypeParam --- crates/hir/src/code_model.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'crates/hir/src/code_model.rs') diff --git a/crates/hir/src/code_model.rs b/crates/hir/src/code_model.rs index a7a38d43a..071e553a8 100644 --- a/crates/hir/src/code_model.rs +++ b/crates/hir/src/code_model.rs @@ -1276,6 +1276,18 @@ impl TypeParam { } } + pub fn trait_bounds(self, db: &dyn HirDatabase) -> Vec { + db.generic_predicates_for_param(self.id) + .into_iter() + .filter_map(|pred| match &pred.value { + hir_ty::GenericPredicate::Implemented(trait_ref) => { + Some(Trait::from(trait_ref.trait_)) + } + _ => None, + }) + .collect() + } + pub fn default(self, db: &dyn HirDatabase) -> Option { let params = db.generic_defaults(self.id.parent); let local_idx = hir_ty::param_idx(db, self.id)?; -- cgit v1.2.3