aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/resolve.rs
diff options
context:
space:
mode:
authorFlorian Diebold <[email protected]>2019-01-29 19:49:31 +0000
committerFlorian Diebold <[email protected]>2019-02-01 21:45:43 +0000
commitafce8e442639fa9ed954b3659a2d1eccb7d80113 (patch)
tree38015aa82986dc69f5b60cfb21fe6062a37d8006 /crates/ra_hir/src/resolve.rs
parent33ff7b56ff353410e7bcb7aed27004d4f0a57d8e (diff)
Use the new Resolver API for goto def
Diffstat (limited to 'crates/ra_hir/src/resolve.rs')
-rw-r--r--crates/ra_hir/src/resolve.rs26
1 files changed, 16 insertions, 10 deletions
diff --git a/crates/ra_hir/src/resolve.rs b/crates/ra_hir/src/resolve.rs
index 30cf9c69e..871f7d8f7 100644
--- a/crates/ra_hir/src/resolve.rs
+++ b/crates/ra_hir/src/resolve.rs
@@ -9,7 +9,7 @@ use crate::{
9 name::{Name, KnownName}, 9 name::{Name, KnownName},
10 nameres::{PerNs, ItemMap}, 10 nameres::{PerNs, ItemMap},
11 generics::GenericParams, 11 generics::GenericParams,
12 expr::{scope::{ExprScopes, ScopeId}, PatId}, 12 expr::{scope::{ExprScopes, ScopeId}, PatId, Body},
13 impl_block::ImplBlock, 13 impl_block::ImplBlock,
14 path::Path, 14 path::Path,
15}; 15};
@@ -106,15 +106,21 @@ impl Resolver {
106 } 106 }
107 107
108 fn module(&self) -> Option<(&ItemMap, Module)> { 108 fn module(&self) -> Option<(&ItemMap, Module)> {
109 for scope in self.scopes.iter().rev() { 109 self.scopes.iter().rev().find_map(|scope| match scope {
110 match scope { 110 Scope::ModuleScope(m) => Some((&*m.item_map, m.module.clone())),
111 Scope::ModuleScope(m) => { 111
112 return Some((&m.item_map, m.module.clone())); 112 Scope::ModuleScopeRef(m) => Some((m.item_map, m.module.clone())),
113 } 113
114 _ => {} 114 _ => None,
115 } 115 })
116 } 116 }
117 None 117
118 /// The body from which any `LocalBinding` resolutions in this resolver come.
119 pub fn body(&self) -> Option<Arc<Body>> {
120 self.scopes.iter().rev().find_map(|scope| match scope {
121 Scope::ExprScope(expr_scope) => Some(expr_scope.expr_scopes.body()),
122 _ => None,
123 })
118 } 124 }
119} 125}
120 126