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.rs13
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()
}
}