diff --git a/helix-core/src/syntax.rs b/helix-core/src/syntax.rs index 8f62bead2..f2939e3d3 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>), } @@ -318,7 +319,12 @@ impl TextObjectQuery { let iter: Box> = match quantifier { CaptureQuantifier::OneOrMore | CaptureQuantifier::ZeroOrMore => { - Box::new(std::iter::once(CapturedNode::Grouped(nodes.collect()))) + let nodes: Vec = 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)), };