- var isok = v.callsite(method_is_ok, [iter]).as(not null)
- if not isok.is_true then break
- if self.variables.length == 1 then
- var item = v.callsite(method_item, [iter]).as(not null)
- #self.debug("item {item}")
- v.write_variable(self.variables.first, item)
- else if self.variables.length == 2 then
- var key = v.callsite(method_key, [iter]).as(not null)
- v.write_variable(self.variables[0], key)
- var item = v.callsite(method_item, [iter]).as(not null)
- v.write_variable(self.variables[1], item)
- else
- abort
+ for g in n_groups, iter in iters do
+ var isok = v.callsite(g.method_is_ok, [iter]).as(not null)
+ if not isok.is_true then break label
+ if g.variables.length == 1 then
+ var item = v.callsite(g.method_item, [iter]).as(not null)
+ #self.debug("item {item}")
+ v.write_variable(g.variables.first, item)
+ else if g.variables.length == 2 then
+ var key = v.callsite(g.method_key, [iter]).as(not null)
+ v.write_variable(g.variables[0], key)
+ var item = v.callsite(g.method_item, [iter]).as(not null)
+ v.write_variable(g.variables[1], item)
+ else
+ abort
+ end