diff --git a/lib/src/extend/functions.dart b/lib/src/extend/functions.dart index c9a0fb217..c2e694fd3 100644 --- a/lib/src/extend/functions.dart +++ b/lib/src/extend/functions.dart @@ -522,14 +522,17 @@ List> paths(Iterable> choices) => choices.fold( QueueList> _groupSelectors( Iterable complex) { var groups = QueueList>(); - var iterator = complex.iterator..moveNext(); - while (iterator.current != null) { - var group = []; - do { + var iterator = complex.iterator; + if (!iterator.moveNext()) return groups; + var group = [iterator.current]; + groups.add(group); + while (iterator.moveNext()) { + if (group.last is Combinator || iterator.current is Combinator) { group.add(iterator.current); - } while (iterator.moveNext() && - (iterator.current is Combinator || group.last is Combinator)); - groups.add(group); + } else { + group = [iterator.current]; + groups.add(group); + } } return groups; }