Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir_expand/src/lib.rs')
| -rw-r--r-- | crates/hir_expand/src/lib.rs | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/crates/hir_expand/src/lib.rs b/crates/hir_expand/src/lib.rs index c9165a0cf6..4c09b2ab19 100644 --- a/crates/hir_expand/src/lib.rs +++ b/crates/hir_expand/src/lib.rs @@ -22,7 +22,7 @@ use either::Either; pub use mbe::{ExpandError, ExpandResult}; pub use parser::FragmentKind; -use std::{hash::Hash, sync::Arc}; +use std::{hash::Hash, iter, sync::Arc}; use base_db::{impl_intern_key, salsa, CrateId, FileId, FileRange}; use syntax::{ @@ -454,7 +454,7 @@ impl InFile<SyntaxNode> { self, db: &dyn db::AstDatabase, ) -> impl Iterator<Item = InFile<SyntaxNode>> + '_ { - std::iter::successors(Some(self), move |node| match node.value.parent() { + iter::successors(Some(self), move |node| match node.value.parent() { Some(parent) => Some(node.with_value(parent)), None => { let parent_node = node.file_id.call_node(db)?; @@ -570,19 +570,14 @@ impl<N: AstNode> InFile<N> { where N: 'db, { - std::iter::successors(Some(self), move |node| { + iter::successors(Some(self), move |node| { let InFile { file_id, value } = node.file_id.call_node(db)?; N::cast(value).map(|n| InFile::new(file_id, n)) }) } pub fn node_with_attributes(self, db: &dyn db::AstDatabase) -> InFile<N> { - std::iter::successors(Some(self), move |node| { - let InFile { file_id, value } = node.file_id.call_node(db)?; - N::cast(value).map(|n| InFile::new(file_id, n)) - }) - .last() - .unwrap() + self.nodes_with_attributes(db).last().unwrap() } } |