Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/syntax/src/syntax_editor/mapping.rs')
| -rw-r--r-- | crates/syntax/src/syntax_editor/mapping.rs | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/crates/syntax/src/syntax_editor/mapping.rs b/crates/syntax/src/syntax_editor/mapping.rs index d6498a5ec9..17319368af 100644 --- a/crates/syntax/src/syntax_editor/mapping.rs +++ b/crates/syntax/src/syntax_editor/mapping.rs @@ -135,12 +135,11 @@ impl SyntaxMapping { SyntaxElement::Node(node) => node.clone(), SyntaxElement::Token(token) => token.parent().unwrap(), }; - let Some(input_ancestor) = - node.ancestors().find(|ancestor| self.upmap_node_single(ancestor).is_some()) - else { + let Some((input_ancestor, output_ancestor)) = node.ancestors().find_map(|ancestor| { + self.upmap_node_single(&ancestor).map(|output_ancestor| (ancestor, output_ancestor)) + }) else { return current; }; - let output_ancestor = self.upmap_node_single(&input_ancestor).unwrap(); current = self .upmap_child_element(¤t, &input_ancestor, &output_ancestor.parent().unwrap()) .expect("the nearest mapped ancestor must map its descendants"); |