diff options
Diffstat (limited to 'crates/ra_hir/src/nameres.rs')
-rw-r--r-- | crates/ra_hir/src/nameres.rs | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/crates/ra_hir/src/nameres.rs b/crates/ra_hir/src/nameres.rs index 56ed872d5..c34aa4b50 100644 --- a/crates/ra_hir/src/nameres.rs +++ b/crates/ra_hir/src/nameres.rs | |||
@@ -62,7 +62,7 @@ use test_utils::tested_by; | |||
62 | 62 | ||
63 | use crate::{ | 63 | use crate::{ |
64 | ModuleDef, Name, Crate, Module, | 64 | ModuleDef, Name, Crate, Module, |
65 | DefDatabase, Path, PathKind, HirFileId, | 65 | DefDatabase, Path, PathKind, HirFileId, Trait, |
66 | ids::{SourceItemId, SourceFileItemId, MacroCallId}, | 66 | ids::{SourceItemId, SourceFileItemId, MacroCallId}, |
67 | diagnostics::DiagnosticSink, | 67 | diagnostics::DiagnosticSink, |
68 | nameres::diagnostics::DefDiagnostic, | 68 | nameres::diagnostics::DefDiagnostic, |
@@ -139,6 +139,12 @@ impl ModuleScope { | |||
139 | pub fn get(&self, name: &Name) -> Option<&Resolution> { | 139 | pub fn get(&self, name: &Name) -> Option<&Resolution> { |
140 | self.items.get(name) | 140 | self.items.get(name) |
141 | } | 141 | } |
142 | pub fn traits<'a>(&'a self) -> impl Iterator<Item = Trait> + 'a { | ||
143 | self.items.values().filter_map(|r| match r.def.take_types() { | ||
144 | Some(ModuleDef::Trait(t)) => Some(t), | ||
145 | _ => None, | ||
146 | }) | ||
147 | } | ||
142 | } | 148 | } |
143 | 149 | ||
144 | #[derive(Debug, Clone, PartialEq, Eq, Default)] | 150 | #[derive(Debug, Clone, PartialEq, Eq, Default)] |