mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-02 15:32:06 +00:00
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.
This commit is contained in:
parent
f3cfd8afb6
commit
0292efd363
@ -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<RootDatabase>, trait_: hir::Trait) -> Vec<Na
|
||||
.collect()
|
||||
}
|
||||
|
||||
fn impls_for_trait_fn(
|
||||
fn impls_for_trait_item(
|
||||
sema: &Semantics<RootDatabase>,
|
||||
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;
|
||||
//^
|
||||
}
|
||||
"#,
|
||||
);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user