diff options
Diffstat (limited to 'helix-core')
-rw-r--r-- | helix-core/src/syntax.rs | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/helix-core/src/syntax.rs b/helix-core/src/syntax.rs index 8f62bead..f2939e3d 100644 --- a/helix-core/src/syntax.rs +++ b/helix-core/src/syntax.rs @@ -246,6 +246,7 @@ pub struct TextObjectQuery { pub enum CapturedNode<'a> { Single(Node<'a>), + /// Guarenteed to be not empty Grouped(Vec<Node<'a>>), } @@ -318,7 +319,12 @@ impl TextObjectQuery { let iter: Box<dyn Iterator<Item = CapturedNode>> = match quantifier { CaptureQuantifier::OneOrMore | CaptureQuantifier::ZeroOrMore => { - Box::new(std::iter::once(CapturedNode::Grouped(nodes.collect()))) + let nodes: Vec<Node> = nodes.collect(); + if nodes.is_empty() { + Box::new(std::iter::empty()) + } else { + Box::new(std::iter::once(CapturedNode::Grouped(nodes))) + } } _ => Box::new(nodes.map(CapturedNode::Single)), }; |