|
@@ -3699,18 +3699,20 @@ void compile_node(buffer_t *gbuf, buffer_t *buf, list_t *ctx, table_t *ltab, sta
|
|
|
|
|
|
buffer_t *bbuf = buffer_new();
|
|
|
|
|
|
- for (size_t i = 0; i < node->a->b->l->length; i++) {
|
|
|
- if (node->b) {
|
|
|
- buffer_fmt(bbuf, "if (_qi_truthy(state, ");
|
|
|
- compile_node(gbuf, bbuf, ctx, ltab, lstk, sstk, lbl, node->b);
|
|
|
- buffer_fmt(bbuf, "))");
|
|
|
- }
|
|
|
+ if (node->b) {
|
|
|
+ buffer_fmt(bbuf, "if (_qi_truthy(state, ");
|
|
|
+ compile_node(gbuf, bbuf, ctx, ltab, lstk, sstk, lbl, node->b);
|
|
|
+ buffer_fmt(bbuf, ")) {\n");
|
|
|
+ }
|
|
|
|
|
|
+ for (size_t i = 0; i < node->a->b->l->length; i++) {
|
|
|
buffer_fmt(bbuf, "qi_list_push(list, ");
|
|
|
compile_node(gbuf, bbuf, ctx, ltab, lstk, sstk, lbl, node->a->b->l->data[i]);
|
|
|
buffer_fmt(bbuf, ");\n");
|
|
|
}
|
|
|
|
|
|
+ buffer_fmt(bbuf, "}\n");
|
|
|
+
|
|
|
node->a->b = nodeb(bbuf);
|
|
|
node->a->t2 = NULL;
|
|
|
|