UNPKG

@fink/loxia

Version:

A fink to JavaScript compiler.

129 lines (110 loc) 3.65 kB
const types_0 = require("@babel/types"); const binaryExpression_0 = types_0.binaryExpression; const identifier_0 = types_0.identifier; const { dec_ref: dec_ref_0 } = require("../../ir/context.js"); const { get_refs: get_refs_0 } = require("../../ir/context.js"); const { add: add_0 } = require("../context.js"); const { get_js: get_js_0 } = require("../context.js"); const { set_js2: set_js2_0 } = require("../context.js"); const transform_if_val_0 = (expr_0, ctx_0) => { const val_0 = expr_0[0].args; const val_1 = get_js_0(val_0[0], ctx_0); const true_js_0 = get_js_0(val_0[1], ctx_0); const false_js_0 = get_js_0(val_0[2], ctx_0); const arg_8 = identifier_0(`undefined`); const arg_6 = binaryExpression_0(`===`, arg_8, val_1); const js_0 = types_0.conditionalExpression(arg_6, false_js_0, true_js_0); const result_5 = set_js2_0(expr_0, js_0, ctx_0); return result_5; }; const transform_is_val_0 = (expr_1, ctx_1) => { const val_3 = get_js_0(expr_1[0].args[0], ctx_1); const arg_19 = identifier_0(`undefined`); const js_1 = binaryExpression_0(`!==`, arg_19, val_3); const result_9 = set_js2_0(expr_1, js_1, ctx_1); return result_9; }; const transform_is_rec_0 = (expr_2, ctx_2) => { const val_5 = get_js_0(expr_2[0].args[0], ctx_2); const arg_28 = identifier_0(`null`); const js_2 = binaryExpression_0(`!=`, arg_28, val_5); const result_13 = set_js2_0(expr_2, js_2, ctx_2); return result_13; }; const transform_is_lst_0 = (expr_3, ctx_3) => { const val_7 = get_js_0(expr_3[0].args[0], ctx_3); const arg_37 = identifier_0(`null`); const js_3 = binaryExpression_0(`!=`, arg_37, val_7); const result_17 = set_js2_0(expr_3, js_3, ctx_3); return result_17; }; const transform_if_0 = (expr_4, ctx_4) => { const drec_5 = expr_4[0]; const val_8 = drec_5.args; const else_id_0 = val_8[2]; const cond_c_0 = get_js_0(val_8[0], ctx_4); const true_c_0 = get_js_0(val_8[1], ctx_4); const sprd_0 = types_0.ifStatement(cond_c_0, true_c_0); const if_true_js_0 = { ...sprd_0, leadingComments: [{ type: `CommentBlock`, value: ` istanbul ignore else ` }], loc: drec_5.loc }; const value_0 = get_refs_0(else_id_0, ctx_4); /* istanbul ignore else */ if (true === (value_0 === 1)) { const else_js_0 = get_js_0(else_id_0, ctx_4); let ret_5; ret_5: { /* istanbul ignore else */ if (null != else_js_0) { /* istanbul ignore else */ if (else_js_0.type === `BlockStatement`) { ret_5 = else_js_0.body; /* istanbul ignore next */ break ret_5; } } } const else_exprs_0 = ret_5; return [[if_true_js_0, ...else_exprs_0], ctx_4]; } /* istanbul ignore else */ if (true === value_0 > 1) { const next_ctx_0 = dec_ref_0(else_id_0, ctx_4); return [[if_true_js_0], next_ctx_0]; } /* istanbul ignore next */ return; }; const add_conditionals_0 = ctx_5 => { const pfn_0 = add_0(`ifv`, transform_if_val_0); const ppr_0 = pfn_0(ctx_5); const pfn_1 = add_0(`isv`, transform_is_val_0); const ppr_1 = pfn_1(ppr_0); const pfn_2 = add_0(`is_r`, transform_is_rec_0); const ppr_2 = pfn_2(ppr_1); const pfn_3 = add_0(`is_l`, transform_is_lst_0); const ppr_3 = pfn_3(ppr_2); const pfn_4 = add_0(`cif`, transform_if_0); const ppr_4 = pfn_4(ppr_3); return ppr_4; }; exports.transform_if_val = transform_if_val_0; exports.transform_is_val = transform_is_val_0; exports.transform_is_rec = transform_is_rec_0; exports.transform_is_lst = transform_is_lst_0; exports.transform_if = transform_if_0; exports.add_conditionals = add_conditionals_0;