aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/source_binder.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/source_binder.rs')
-rw-r--r--crates/ra_hir/src/source_binder.rs15
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
15use crate::{ 15use 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
154pub 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
154pub fn macro_symbols(db: &impl HirDatabase, file_id: FileId) -> Vec<(SmolStr, TextRange)> { 167pub 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,