@fink/loxia
Version:
A fink to JavaScript compiler.
219 lines (193 loc) • 7.19 kB
JavaScript
import { unique_or_id as unique_or_id_0 } from "../context.js";
import { ir_fn as ir_fn_0 } from "../context.js";
import { transform as transform_0 } from "../transform.js";
import { lst as lst_0 } from "../literals/list.js";
import { lst_a as lst_a_0 } from "../literals/list.js";
import { lst_c as lst_c_0 } from "../literals/list.js";
import { lst_h as lst_h_0 } from "../assignment/init.js";
import { fnc as fnc_0 } from "../func/init.js";
const af_0 = (fn_id_0, args_id_0, name_or_id_0, drec_0, ctx_0) => {
const result_0 = ir_fn_0(`af`, [fn_id_0, args_id_0], name_or_id_0, {
loc: drec_0.loc
}, ctx_0);
return result_0;
};
const prtl_func_0 = (prtl_arg_id_0, res_0, res_id_0, fn_id_or_name_0, drec_1, ctx_1) => {
const loc_1 = drec_1.loc;
const dlst_0 = unique_or_id_0(`args`, {
loc: loc_1
}, ctx_1);
const args_id_1 = dlst_0[0];
const dlst_1 = lst_h_0(args_id_1, prtl_arg_id_0, {
loc: loc_1
}, dlst_0[1]);
const result_4 = fnc_0(args_id_1, res_id_0, [...dlst_1[0], ...res_0], fn_id_or_name_0, {
loc: loc_1
}, dlst_1[2]);
return result_4;
};
const add_arg_0 = (args_id_2, arg_18, arg_id_0, drec_2, ctx_2) => {
const dlst_2 = lst_a_0(args_id_2, arg_id_0, `cargs`, {
loc: drec_2.loc
}, ctx_2);
return [[...arg_18, ...dlst_2[0]], dlst_2[1], dlst_2[2]];
};
const spread_arg_0 = (args_id_3, arg_24, arg_id_1, drec_3, ctx_3) => {
const dlst_3 = lst_c_0(args_id_3, arg_id_1, `cargs`, {
loc: drec_3.loc
}, ctx_3);
return [[...arg_24, ...dlst_3[0]], dlst_3[1], dlst_3[2]];
};
const transform_with_partial_0 = (expr_0, name_0, ctx_4) => {
const hdm_0 = ctx_4.partial_ident;
const outer_prtl_0 = undefined === hdm_0 ? false : hdm_0;
let ret_4;
ret_4: {
/* istanbul ignore else */
if (outer_prtl_0 === false) {
const result_12 = transform_0(expr_0, name_0, ctx_4);
ret_4 = result_12;
/* istanbul ignore next */
break ret_4;
}
const result_11 = transform_0(expr_0, name_0, { ...ctx_4,
partial_ident: false
});
ret_4 = result_11;
/* istanbul ignore next */
break ret_4;
}
const dlst_4 = ret_4;
const arg_36 = dlst_4[0];
const arg_id_2 = dlst_4[1];
const next_ctx_2 = dlst_4[2];
const hdm_1 = next_ctx_2.partial_ident;
const arg_prtl_0 = undefined === hdm_1 ? false : hdm_1;
/* istanbul ignore else */
if (null != [outer_prtl_0, arg_prtl_0]) {
/* istanbul ignore else */
if (outer_prtl_0 === false) {
/* istanbul ignore else */
if (true === (arg_prtl_0 !== false)) {
const result_16 = prtl_func_0(arg_prtl_0, arg_36, arg_id_2, `pfn`, expr_0, { ...next_ctx_2,
partial_ident: false
});
return result_16;
}
}
}
return [arg_36, arg_id_2, { ...next_ctx_2,
partial_ident: outer_prtl_0
}];
};
const transform_arg_0 = (expr_1, args_id_4, ctx_5) => {
const dlst_5 = transform_with_partial_0(expr_1, `arg`, ctx_5);
const result_18 = add_arg_0(args_id_4, dlst_5[0], dlst_5[1], expr_1, dlst_5[2]);
return result_18;
};
const transform_spread_arg_0 = (expr_2, args_id_5, ctx_6) => {
const dlst_6 = transform_0(expr_2.right, `sprd`, ctx_6);
const result_20 = spread_arg_0(args_id_5, dlst_6[0], dlst_6[1], expr_2, dlst_6[2]);
return result_20;
};
const transform_partial_arg_0 = (expr_3, args_id_6, ctx_7) => {
const dlst_7 = transform_0(expr_3, `parg`, ctx_7);
const result_22 = add_arg_0(args_id_6, dlst_7[0], dlst_7[1], expr_3, dlst_7[2]);
return result_22;
};
const transform_all_args_0 = (...args_11) => {
transform_all_args_0: do {
const dlst_8 = args_11[0];
const hdm_2 = dlst_8[0];
const expr_4 = undefined === hdm_2 ? false : hdm_2;
const tail_59 = dlst_8.slice(1);
const args_id_7 = args_11[1];
const ctx_8 = args_11[2];
const hdm_3 = args_11[3];
const out_0 = undefined === hdm_3 ? [] : hdm_3;
/* istanbul ignore else */
if (expr_4 === false) {
return [out_0, args_id_7, ctx_8];
}
/* istanbul ignore else */
if (null != expr_4) {
/* istanbul ignore else */
if (expr_4.type === `spread`) {
const dlst_12 = transform_spread_arg_0(expr_4, args_id_7, ctx_8);
args_11 = [tail_59, dlst_12[1], dlst_12[2], [...out_0, ...dlst_12[0]]];
continue transform_all_args_0;
}
}
/* istanbul ignore else */
if (null != expr_4) {
/* istanbul ignore else */
if (expr_4.type === `partial`) {
const dlst_11 = transform_partial_arg_0(expr_4, args_id_7, ctx_8);
args_11 = [tail_59, dlst_11[1], dlst_11[2], [...out_0, ...dlst_11[0]]];
continue transform_all_args_0;
}
}
/* istanbul ignore else */
if (null != expr_4) {
/* istanbul ignore else */
if (expr_4.type === `empty`) {
const dlst_10 = add_arg_0(args_id_7, [], {
i: `_`,
loc: expr_4.loc
}, expr_4, ctx_8);
args_11 = [tail_59, dlst_10[1], dlst_10[2], [...out_0, ...dlst_10[0]]];
continue transform_all_args_0;
}
}
const dlst_9 = transform_arg_0(expr_4, args_id_7, ctx_8);
args_11 = [tail_59, dlst_9[1], dlst_9[2], [...out_0, ...dlst_9[0]]];
continue transform_all_args_0;
} while (true);
};
const transform_args_0 = (expr_5, ctx_9) => {
const dlst_13 = lst_0(`cargs`, expr_5, ctx_9);
const dlst_14 = transform_all_args_0(expr_5.args, dlst_13[1], dlst_13[2]);
return [[...dlst_13[0], ...dlst_14[0]], dlst_14[1], dlst_14[2]];
};
const transform_call_0 = (node_0, result_36, ctx_10) => {
const hdm_4 = ctx_10.partial_ident;
const outer_prtl_1 = undefined === hdm_4 ? false : hdm_4;
const dlst_15 = transform_0(node_0.callee, `callee`, ctx_10);
const callee_26 = dlst_15[0];
const c_id_0 = dlst_15[1];
const dlst_16 = transform_args_0(node_0, dlst_15[2]);
const args_14 = dlst_16[0];
const args_id_9 = dlst_16[1];
const next_ctx_11 = dlst_16[2];
const hdm_5 = next_ctx_11.partial_ident;
const call_prtl_0 = undefined === hdm_5 ? false : hdm_5;
/* istanbul ignore else */
if (null != [outer_prtl_1, call_prtl_0]) {
/* istanbul ignore else */
if (outer_prtl_1 === false) {
/* istanbul ignore else */
if (true === (call_prtl_0 !== false)) {
const dlst_18 = af_0(c_id_0, args_id_9, `pfn`, node_0, next_ctx_11);
const dlst_19 = prtl_func_0(call_prtl_0, [...callee_26, ...args_14, ...dlst_18[0]], dlst_18[1], result_36, node_0, dlst_18[2]);
return [dlst_19[0], { ...dlst_19[2],
partial_ident: outer_prtl_1
}];
}
}
}
const dlst_17 = af_0(c_id_0, args_id_9, result_36, node_0, next_ctx_11);
return [[...callee_26, ...args_14, ...dlst_17[0]], { ...dlst_17[2],
partial_ident: outer_prtl_1
}];
};
export const af = af_0,
prtl_func = prtl_func_0,
add_arg = add_arg_0,
spread_arg = spread_arg_0,
transform_with_partial = transform_with_partial_0,
transform_arg = transform_arg_0,
transform_spread_arg = transform_spread_arg_0,
transform_partial_arg = transform_partial_arg_0,
transform_all_args = transform_all_args_0,
transform_args = transform_args_0,
transform_call = transform_call_0;