aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/resolve.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir/src/resolve.rs')
-rw-r--r--crates/ra_hir/src/resolve.rs35
1 files changed, 9 insertions, 26 deletions
diff --git a/crates/ra_hir/src/resolve.rs b/crates/ra_hir/src/resolve.rs
index 0f60d4742..3d7ec5683 100644
--- a/crates/ra_hir/src/resolve.rs
+++ b/crates/ra_hir/src/resolve.rs
@@ -138,10 +138,7 @@ impl Resolver {
138 expr_scopes: Arc<ExprScopes>, 138 expr_scopes: Arc<ExprScopes>,
139 scope_id: ScopeId, 139 scope_id: ScopeId,
140 ) -> Resolver { 140 ) -> Resolver {
141 self.push_scope(Scope::ExprScope(ExprScope { 141 self.push_scope(Scope::ExprScope(ExprScope { expr_scopes, scope_id }))
142 expr_scopes,
143 scope_id,
144 }))
145 } 142 }
146} 143}
147 144
@@ -170,11 +167,8 @@ impl Scope {
170 } 167 }
171 } 168 }
172 Scope::ExprScope(e) => { 169 Scope::ExprScope(e) => {
173 let entry = e 170 let entry =
174 .expr_scopes 171 e.expr_scopes.entries(e.scope_id).iter().find(|entry| entry.name() == name);
175 .entries(e.scope_id)
176 .iter()
177 .find(|entry| entry.name() == name);
178 match entry { 172 match entry {
179 Some(e) => PerNs::values(Resolution::LocalBinding(e.pat())), 173 Some(e) => PerNs::values(Resolution::LocalBinding(e.pat())),
180 None => PerNs::none(), 174 None => PerNs::none(),
@@ -193,35 +187,24 @@ impl Scope {
193 // def: m.module.into(), 187 // def: m.module.into(),
194 // }), 188 // }),
195 // ); 189 // );
196 m.item_map[m.module.module_id] 190 m.item_map[m.module.module_id].entries().for_each(|(name, res)| {
197 .entries() 191 f(name.clone(), res.def.map(Resolution::Def));
198 .for_each(|(name, res)| { 192 });
199 f(name.clone(), res.def.map(Resolution::Def));
200 });
201 m.item_map.extern_prelude.iter().for_each(|(name, def)| { 193 m.item_map.extern_prelude.iter().for_each(|(name, def)| {
202 f(name.clone(), PerNs::types(Resolution::Def(*def))); 194 f(name.clone(), PerNs::types(Resolution::Def(*def)));
203 }); 195 });
204 } 196 }
205 Scope::GenericParams(gp) => { 197 Scope::GenericParams(gp) => {
206 for param in &gp.params { 198 for param in &gp.params {
207 f( 199 f(param.name.clone(), PerNs::types(Resolution::GenericParam(param.idx)))
208 param.name.clone(),
209 PerNs::types(Resolution::GenericParam(param.idx)),
210 )
211 } 200 }
212 } 201 }
213 Scope::ImplBlockScope(i) => { 202 Scope::ImplBlockScope(i) => {
214 f( 203 f(Name::self_type(), PerNs::types(Resolution::SelfType(i.clone())));
215 Name::self_type(),
216 PerNs::types(Resolution::SelfType(i.clone())),
217 );
218 } 204 }
219 Scope::ExprScope(e) => { 205 Scope::ExprScope(e) => {
220 e.expr_scopes.entries(e.scope_id).iter().for_each(|e| { 206 e.expr_scopes.entries(e.scope_id).iter().for_each(|e| {
221 f( 207 f(e.name().clone(), PerNs::values(Resolution::LocalBinding(e.pat())));
222 e.name().clone(),
223 PerNs::values(Resolution::LocalBinding(e.pat())),
224 );
225 }); 208 });
226 } 209 }
227 } 210 }