diff options
author | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-02-01 06:00:47 +0000 |
---|---|---|
committer | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-02-01 06:00:47 +0000 |
commit | 9d3f4624e1a83eb945f4df6427fc650356ea77fa (patch) | |
tree | 0015874d918f8be2ec848ab2b110d4478890388b /crates/ra_hir/src/source_binder.rs | |
parent | 4c0ab7db85d2084870db4a2f92d92a3ae67a3bb1 (diff) | |
parent | f0fdc9d5c0b5c8712bbd94da20289fda4259d793 (diff) |
Merge #721
721: Go To Implementation for Trait r=matklad a=kjeremy
If on a trait def you can now go to all the impls of that trait in the crate.
This is more of #620.
Co-authored-by: kjeremy <[email protected]>
Diffstat (limited to 'crates/ra_hir/src/source_binder.rs')
-rw-r--r-- | crates/ra_hir/src/source_binder.rs | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/crates/ra_hir/src/source_binder.rs b/crates/ra_hir/src/source_binder.rs index d1eaccf23..a1b94ed9c 100644 --- a/crates/ra_hir/src/source_binder.rs +++ b/crates/ra_hir/src/source_binder.rs | |||
@@ -14,7 +14,7 @@ use ra_syntax::{ | |||
14 | 14 | ||
15 | use crate::{ | 15 | use crate::{ |
16 | HirDatabase, Function, ModuleDef, Struct, Enum, | 16 | HirDatabase, Function, ModuleDef, Struct, Enum, |
17 | AsName, Module, HirFileId, Crate, | 17 | AsName, Module, HirFileId, Crate, Trait, |
18 | ids::{LocationCtx, SourceFileItemId}, | 18 | ids::{LocationCtx, SourceFileItemId}, |
19 | }; | 19 | }; |
20 | 20 | ||
@@ -151,6 +151,19 @@ pub fn enum_from_module(db: &impl HirDatabase, module: Module, enum_def: &ast::E | |||
151 | } | 151 | } |
152 | } | 152 | } |
153 | 153 | ||
154 | pub fn trait_from_module( | ||
155 | db: &impl HirDatabase, | ||
156 | module: Module, | ||
157 | trait_def: &ast::TraitDef, | ||
158 | ) -> Trait { | ||
159 | let (file_id, _) = module.definition_source(db); | ||
160 | let file_id = file_id.into(); | ||
161 | let ctx = LocationCtx::new(db, module, file_id); | ||
162 | Trait { | ||
163 | id: ctx.to_def(trait_def), | ||
164 | } | ||
165 | } | ||
166 | |||
154 | pub fn macro_symbols(db: &impl HirDatabase, file_id: FileId) -> Vec<(SmolStr, TextRange)> { | 167 | pub fn macro_symbols(db: &impl HirDatabase, file_id: FileId) -> Vec<(SmolStr, TextRange)> { |
155 | let module = match module_from_file_id(db, file_id) { | 168 | let module = match module_from_file_id(db, file_id) { |
156 | Some(it) => it, | 169 | Some(it) => it, |