diff options
author | Jeremy Kolb <[email protected]> | 2019-01-28 14:26:32 +0000 |
---|---|---|
committer | Jeremy Kolb <[email protected]> | 2019-01-30 00:13:02 +0000 |
commit | 3c17643b3085682a695f0e6d80483edc00d04cb3 (patch) | |
tree | 2e76d7be4f703a46608078228124285bc2c94e21 /crates/ra_hir/src/source_binder.rs | |
parent | 48d2acb297459fb06cbb49bdce2eccb4c2591714 (diff) |
Go to Implementation for structs and enums
Diffstat (limited to 'crates/ra_hir/src/source_binder.rs')
-rw-r--r-- | crates/ra_hir/src/source_binder.rs | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/crates/ra_hir/src/source_binder.rs b/crates/ra_hir/src/source_binder.rs index f523f0647..589efd023 100644 --- a/crates/ra_hir/src/source_binder.rs +++ b/crates/ra_hir/src/source_binder.rs | |||
@@ -13,7 +13,7 @@ use ra_syntax::{ | |||
13 | }; | 13 | }; |
14 | 14 | ||
15 | use crate::{ | 15 | use crate::{ |
16 | HirDatabase, Function, ModuleDef, | 16 | HirDatabase, Function, ModuleDef, Struct, Enum, |
17 | AsName, Module, HirFileId, | 17 | AsName, Module, HirFileId, |
18 | ids::{LocationCtx, SourceFileItemId}, | 18 | ids::{LocationCtx, SourceFileItemId}, |
19 | }; | 19 | }; |
@@ -128,6 +128,28 @@ pub fn function_from_child_node( | |||
128 | function_from_source(db, file_id, fn_def) | 128 | function_from_source(db, file_id, fn_def) |
129 | } | 129 | } |
130 | 130 | ||
131 | pub fn struct_from_module( | ||
132 | db: &impl HirDatabase, | ||
133 | module: Module, | ||
134 | struct_def: &ast::StructDef, | ||
135 | ) -> Struct { | ||
136 | let (file_id, _) = module.definition_source(db); | ||
137 | let file_id = file_id.into(); | ||
138 | let ctx = LocationCtx::new(db, module, file_id); | ||
139 | Struct { | ||
140 | id: ctx.to_def(struct_def), | ||
141 | } | ||
142 | } | ||
143 | |||
144 | pub fn enum_from_module(db: &impl HirDatabase, module: Module, enum_def: &ast::EnumDef) -> Enum { | ||
145 | let (file_id, _) = module.definition_source(db); | ||
146 | let file_id = file_id.into(); | ||
147 | let ctx = LocationCtx::new(db, module, file_id); | ||
148 | Enum { | ||
149 | id: ctx.to_def(enum_def), | ||
150 | } | ||
151 | } | ||
152 | |||
131 | pub fn macro_symbols(db: &impl HirDatabase, file_id: FileId) -> Vec<(SmolStr, TextRange)> { | 153 | pub fn macro_symbols(db: &impl HirDatabase, file_id: FileId) -> Vec<(SmolStr, TextRange)> { |
132 | let module = match module_from_file_id(db, file_id) { | 154 | let module = match module_from_file_id(db, file_id) { |
133 | Some(it) => it, | 155 | Some(it) => it, |