UNPKG

@fink/loxia

Version:

A fink to JavaScript compiler.

172 lines (145 loc) 4.77 kB
const types_0 = require("@babel/types"); const assignmentExpression_0 = types_0.assignmentExpression; const expressionStatement_0 = types_0.expressionStatement; const variableDeclaration_0 = types_0.variableDeclaration; const variableDeclarator_0 = types_0.variableDeclarator; const { ˆnull: null_0 } = require("@fink/js-interop/nullish.js"); const { map: map_0 } = require("@fink/std-lib/iter.js"); const { add: add_0 } = require("../context.js"); const { get_js: get_js_0 } = require("../context.js"); const { get_js_literal: get_js_literal_0 } = require("../context.js"); const { set_js2: set_js2_0 } = require("../context.js"); const { with_loc: with_loc_0 } = require("../context.js"); const { get_value: get_value_0 } = require("../../ir/context.js"); const { ident: ident_0 } = require("../identifier/init.js"); const as_call_args_0 = args_1 => { /* istanbul ignore else */ if (null != args_1) { /* istanbul ignore else */ if (args_1.type === `ArrayExpression`) { const ppr_0 = (prtl_0 => { return prtl_0.elements; })(args_1); const pfn_2 = map_0(arg_1 => { /* istanbul ignore else */ if (arg_1 === null_0) { const result_4 = types_0.identifier(`undefined`); return result_4; } return arg_1; }); const ppr_1 = pfn_2(ppr_0); const ppr_2 = (prtl_1 => { return [...prtl_1]; })(ppr_1); return ppr_2; } } /* istanbul ignore next */ return; }; const transform_apply_fn_0 = (expr_0, ctx_0) => { const val_2 = expr_0[0].args; const callee_2 = get_js_0(val_2[0], ctx_0); const arg_5 = get_js_0(val_2[1], ctx_0); const args_12 = as_call_args_0(arg_5); const js_0 = types_0.callExpression(callee_2, args_12); const result_9 = set_js2_0(expr_0, js_0, ctx_0); return result_9; }; const transform_continue_with_fn_0 = (expr_1, ctx_1) => { const val_3 = expr_1[0].args; const drec_3 = get_value_0(val_3[0], ctx_1); const new_args_0 = get_js_0(val_3[1], ctx_1); const arg_21 = ident_0(drec_3.args_id); const arg_19 = assignmentExpression_0(`=`, arg_21, new_args_0); const item_1 = expressionStatement_0(arg_19); const arg_17 = ident_0(drec_3.label_id); const item_0 = types_0.continueStatement(arg_17); return [[item_1, item_0], ctx_1]; }; const transform_apply_cont_0 = (expr_2, ctx_2) => { const cont_0 = get_js_0(expr_2[0].args[0], ctx_2); const ret_ident_0 = cont_0.label; const item_8 = variableDeclarator_0(ret_ident_0); const item_7 = variableDeclaration_0(`let`, [item_8]); const arg_28 = ident_0(expr_2[1][0]); const item_5 = variableDeclarator_0(arg_28, ret_ident_0); const item_4 = variableDeclaration_0(`const`, [item_5]); return [[item_7, cont_0, item_4], ctx_2]; }; const transform_continue_with_cont_0 = (expr_3, ctx_3) => { const val_5 = expr_3[0].args; const ret_id_0 = val_5[0]; const hdm_0 = val_5[1]; const res_id_1 = undefined === hdm_0 ? false : hdm_0; const ret_9 = get_js_literal_0(ret_id_0, ctx_3); /* istanbul ignore else */ if (res_id_1 === false) { /* istanbul ignore else */ if (null != ret_9) { /* istanbul ignore else */ if (ret_9.type === `ReturnStatement`) { return [[ret_9], ctx_3]; } } return [[], ctx_3]; } const res_0 = get_js_0(res_id_1, ctx_3); /* istanbul ignore else */ if (null != ret_9) { /* istanbul ignore else */ if (ret_9.type === `ReturnStatement`) { const arg_49 = types_0.returnStatement(res_0); const js_3 = with_loc_0(res_0, arg_49); return [[js_3], ctx_3]; } } const arg_44 = assignmentExpression_0(`=`, ret_9, res_0); const arg_43 = expressionStatement_0(arg_44); const item_13 = with_loc_0(res_0, arg_43); const arg_40 = ident_0(ret_id_0); const sprd_0 = types_0.breakStatement(arg_40); const item_11 = with_loc_0(res_0, { ...sprd_0, leadingComments: [{ type: `CommentBlock`, value: ` istanbul ignore next ` }] }); return [[item_13, item_11], ctx_3]; }; const add_calls_0 = ctx_4 => { const pfn_5 = add_0(`ac`, transform_apply_cont_0); const ppr_3 = pfn_5(ctx_4); const pfn_6 = add_0(`cc`, transform_continue_with_cont_0); const ppr_4 = pfn_6(ppr_3); const pfn_7 = add_0(`af`, transform_apply_fn_0); const ppr_5 = pfn_7(ppr_4); const pfn_8 = add_0(`cf`, transform_continue_with_fn_0); const ppr_6 = pfn_8(ppr_5); return ppr_6; }; exports.as_call_args = as_call_args_0; exports.transform_apply_fn = transform_apply_fn_0; exports.transform_continue_with_fn = transform_continue_with_fn_0; exports.transform_apply_cont = transform_apply_cont_0; exports.transform_continue_with_cont = transform_continue_with_cont_0; exports.add_calls = add_calls_0;