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