generalize

This commit is contained in:
Aleksey Kladov 2019-04-13 09:38:37 +03:00
parent 17a0e22883
commit d88269bc2d

View File

@ -139,21 +139,13 @@ fn resolver_for_node(
node.ancestors() node.ancestors()
.find_map(|node| { .find_map(|node| {
if ast::Expr::cast(node).is_some() || ast::Block::cast(node).is_some() { if ast::Expr::cast(node).is_some() || ast::Block::cast(node).is_some() {
if let Some(func) = node let def = def_with_body_from_child_node(db, file_id, node)?;
.ancestors() let scopes = def.scopes(db);
.find_map(ast::FnDef::cast) let scope = match offset {
.and_then(|it| function_from_source(db, file_id, it)) None => scopes.scope_for(&node),
{ Some(offset) => scopes.scope_for_offset(offset),
let scopes = func.scopes(db); };
let scope = match offset { Some(expr::resolver_for_scope(def.body(db), db, scope))
None => scopes.scope_for(&node),
Some(offset) => scopes.scope_for_offset(offset),
};
Some(expr::resolver_for_scope(func.body(db), db, scope))
} else {
// FIXME const/static/array length
None
}
} else { } else {
try_get_resolver_for_node(db, file_id, node) try_get_resolver_for_node(db, file_id, node)
} }