UNPKG

@fink/loxia

Version:

A fink to JavaScript compiler.

103 lines (88 loc) 2.95 kB
const { reverse: reverse_0 } = require("@fink/std-lib/iter.js"); const { transform: transform_0 } = require("../transform.js"); const { unique_or_id: unique_or_id_0 } = require("../context.js"); const { ir_fn: ir_fn_0 } = require("../context.js"); const lst_0 = (name_or_id_0, drec_0, ctx_0) => { const result_0 = ir_fn_0(`lst`, [], name_or_id_0, { loc: drec_0.loc }, ctx_0); return result_0; }; const lst_a_0 = (lst_id_0, val_id_0, name_or_id_1, drec_1, ctx_1) => { const result_1 = ir_fn_0(`lst_a`, [lst_id_0, val_id_0], name_or_id_1, { loc: drec_1.loc }, ctx_1); return result_1; }; const lst_c_0 = (lst1_id_0, lst2_id_0, name_or_id_2, drec_2, ctx_2) => { const result_2 = ir_fn_0(`lst_c`, [lst1_id_0, lst2_id_0], name_or_id_2, { loc: drec_2.loc }, ctx_2); return result_2; }; const transform_item_0 = (expr_0, out_id_0, ctx_3) => { const dlst_0 = unique_or_id_0(`lst`, expr_0, ctx_3); const lst_id_1 = dlst_0[0]; const item_ctx_0 = dlst_0[1]; /* istanbul ignore else */ if (null != expr_0) { /* istanbul ignore else */ if (expr_0.type === `spread`) { const dlst_4 = transform_0(expr_0.right, `items`, item_ctx_0); const dlst_5 = lst_c_0(lst_id_1, dlst_4[1], out_id_0, expr_0, dlst_4[2]); return [[...dlst_4[0], ...dlst_5[0]], lst_id_1, dlst_5[2]]; } } /* istanbul ignore else */ if (null != expr_0) { /* istanbul ignore else */ if (expr_0.type === `empty`) { const dlst_3 = lst_a_0(lst_id_1, { i: `_`, loc: expr_0.loc }, out_id_0, expr_0, item_ctx_0); return [dlst_3[0], lst_id_1, dlst_3[2]]; } } const dlst_1 = transform_0(expr_0, `item`, item_ctx_0); const dlst_2 = lst_a_0(lst_id_1, dlst_1[1], out_id_0, expr_0, dlst_1[2]); return [[...dlst_1[0], ...dlst_2[0]], lst_id_1, dlst_2[2]]; }; const transform_items_0 = (...args_4) => { transform_items_0: do { const dlst_6 = args_4[0]; const hdm_0 = dlst_6[0]; const expr_1 = undefined === hdm_0 ? false : hdm_0; const ctx_4 = args_4[1]; const result_id_0 = args_4[2]; const hdm_1 = args_4[3]; const out_0 = undefined === hdm_1 ? [] : hdm_1; /* istanbul ignore else */ if (expr_1 === false) { return [out_0, result_id_0, ctx_4]; } const dlst_7 = transform_item_0(expr_1, result_id_0, ctx_4); args_4 = [dlst_6.slice(1), dlst_7[2], dlst_7[1], [...dlst_7[0], ...out_0]]; continue transform_items_0; } while (true); }; const transform_list_0 = (node_0, result_17, ctx_5) => { const exprs_0 = reverse_0(node_0.exprs); const dlst_8 = transform_items_0(exprs_0, ctx_5, result_17); const dlst_9 = lst_0(dlst_8[1], node_0, dlst_8[2]); return [[...dlst_9[0], ...dlst_8[0]], dlst_9[2]]; }; exports.lst = lst_0; exports.lst_a = lst_a_0; exports.lst_c = lst_c_0; exports.transform_item = transform_item_0; exports.transform_items = transform_items_0; exports.transform_list = transform_list_0;