From 0292efd363584fc4be50b1b1240fbbe990e2ebf1 Mon Sep 17 00:00:00 2001 From: Jade Date: Tue, 25 May 2021 06:27:41 -0700 Subject: Also do goto implementation on assoc consts I forgot to put this into #8988, sorry. Goto implementation on a const on the trait will go to the implementations with their respective definitions of the const, if present. --- crates/ide/src/goto_implementation.rs | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) (limited to 'crates/ide') diff --git a/crates/ide/src/goto_implementation.rs b/crates/ide/src/goto_implementation.rs index 5a8d3c3f9..43356a94e 100644 --- a/crates/ide/src/goto_implementation.rs +++ b/crates/ide/src/goto_implementation.rs @@ -53,7 +53,13 @@ pub(crate) fn goto_implementation( let assoc = f.as_assoc_item(sema.db)?; let name = assoc.name(sema.db)?; let trait_ = assoc.containing_trait(sema.db)?; - impls_for_trait_fn(&sema, trait_, name) + impls_for_trait_item(&sema, trait_, name) + } + hir::ModuleDef::Const(c) => { + let assoc = c.as_assoc_item(sema.db)?; + let name = assoc.name(sema.db)?; + let trait_ = assoc.containing_trait(sema.db)?; + impls_for_trait_item(&sema, trait_, name) } _ => return None, }; @@ -71,7 +77,7 @@ fn impls_for_trait(sema: &Semantics, trait_: hir::Trait) -> Vec, trait_: hir::Trait, fun_name: hir::Name, @@ -303,6 +309,24 @@ impl Tr for S { println!("Hello, world!"); } } +"#, + ); + } + + #[test] + fn goto_implementation_trait_assoc_const() { + check( + r#" +trait Tr { + const C$0: usize; +} + +struct S; + +impl Tr for S { + const C: usize = 4; + //^ +} "#, ); } -- cgit v1.2.3