Use SyntaxNode.ancestors instead of a loop

This commit is contained in:
David Lattimore 2020-08-06 07:36:03 +10:00
parent 6bbeffc8c5
commit 3eea41a68c

View File

@ -176,13 +176,7 @@ pub(crate) fn new(
/// Returns the function in which SSR was invoked, if any.
pub(crate) fn current_function(&self) -> Option<SyntaxNode> {
let mut node = self.node.clone();
loop {
if node.kind() == SyntaxKind::FN {
return Some(node);
}
node = node.parent()?;
}
self.node.ancestors().find(|node| node.kind() == SyntaxKind::FN).map(|node| node.clone())
}
fn resolve_path(&self, path: &ast::Path) -> Option<hir::PathResolution> {