Unnamed repository; edit this file 'description' to name the repository.
fix ast::Path::segments implementation
davidsemakula 2024-01-06
parent e53792b · commit 08c44a6
-rw-r--r--crates/syntax/src/ast/node_ext.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/crates/syntax/src/ast/node_ext.rs b/crates/syntax/src/ast/node_ext.rs
index a7e4899fb7..bc32220b41 100644
--- a/crates/syntax/src/ast/node_ext.rs
+++ b/crates/syntax/src/ast/node_ext.rs
@@ -289,8 +289,15 @@ impl ast::Path {
}
pub fn segments(&self) -> impl Iterator<Item = ast::PathSegment> + Clone {
- successors(self.first_segment(), |p| {
- p.parent_path().parent_path().and_then(|p| p.segment())
+ let path_range = self.syntax().text_range();
+ successors(self.first_segment(), move |p| {
+ p.parent_path().parent_path().and_then(|p| {
+ if path_range.contains_range(p.syntax().text_range()) {
+ p.segment()
+ } else {
+ None
+ }
+ })
})
}