aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/expr.rs
diff options
context:
space:
mode:
authorFlorian Diebold <[email protected]>2019-01-27 19:50:57 +0000
committerFlorian Diebold <[email protected]>2019-02-01 21:45:25 +0000
commit33ff7b56ff353410e7bcb7aed27004d4f0a57d8e (patch)
tree88dba144f41cdbd20584306a296031cb8f0ced3a /crates/ra_hir/src/expr.rs
parent6b076f1931d7dc324d7bbbc4c1df9f7c1c1db8b7 (diff)
Use the new Resolver API in completion
Diffstat (limited to 'crates/ra_hir/src/expr.rs')
-rw-r--r--crates/ra_hir/src/expr.rs18
1 files changed, 15 insertions, 3 deletions
diff --git a/crates/ra_hir/src/expr.rs b/crates/ra_hir/src/expr.rs
index 503a09f25..6c294bf10 100644
--- a/crates/ra_hir/src/expr.rs
+++ b/crates/ra_hir/src/expr.rs
@@ -72,11 +72,23 @@ impl Body {
72} 72}
73 73
74// needs arbitrary_self_types to be a method... or maybe move to the def? 74// needs arbitrary_self_types to be a method... or maybe move to the def?
75#[allow(dead_code)] 75pub fn resolver_for_expr(
76pub fn resolver_for_expr(body: Arc<Body>, db: &impl HirDatabase, expr_id: ExprId) -> Resolver { 76 body: Arc<Body>,
77 db: &impl HirDatabase,
78 expr_id: ExprId,
79) -> Resolver<'static> {
80 let scopes = db.expr_scopes(body.owner);
81 resolver_for_scope(body, db, scopes.scope_for(expr_id))
82}
83
84pub fn resolver_for_scope(
85 body: Arc<Body>,
86 db: &impl HirDatabase,
87 scope_id: Option<scope::ScopeId>,
88) -> Resolver<'static> {
77 let mut r = body.owner.resolver(db); 89 let mut r = body.owner.resolver(db);
78 let scopes = db.expr_scopes(body.owner); 90 let scopes = db.expr_scopes(body.owner);
79 let scope_chain = scopes.scope_chain_for(expr_id).collect::<Vec<_>>(); 91 let scope_chain = scopes.scope_chain_for(scope_id).collect::<Vec<_>>();
80 for scope in scope_chain.into_iter().rev() { 92 for scope in scope_chain.into_iter().rev() {
81 r = r.push_expr_scope(Arc::clone(&scopes), scope); 93 r = r.push_expr_scope(Arc::clone(&scopes), scope);
82 } 94 }