mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 11:31:15 +00:00
generalize
This commit is contained in:
parent
17a0e22883
commit
d88269bc2d
@ -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)
|
|
||||||
.and_then(|it| function_from_source(db, file_id, it))
|
|
||||||
{
|
|
||||||
let scopes = func.scopes(db);
|
|
||||||
let scope = match offset {
|
let scope = match offset {
|
||||||
None => scopes.scope_for(&node),
|
None => scopes.scope_for(&node),
|
||||||
Some(offset) => scopes.scope_for_offset(offset),
|
Some(offset) => scopes.scope_for_offset(offset),
|
||||||
};
|
};
|
||||||
Some(expr::resolver_for_scope(func.body(db), db, scope))
|
Some(expr::resolver_for_scope(def.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)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user