UNPKG

@fink/loxia

Version:

A fink to JavaScript compiler.

362 lines (313 loc) 10.3 kB
import { _in_ } from "@fink/js-interop/runtime.js"; import { reverse as reverse_0 } from "@fink/std-lib/iter.js"; import { init_ctx as init_ctx_0 } from "../ir/context.js"; import { update_value as update_value_0 } from "../ir/context.js"; import { get_value as get_value_0 } from "../ir/context.js"; import { replace_idents as replace_idents_0 } from "./identifier/init.js"; import { add_module as add_module_0 } from "./module/init.js"; import { transfrom_module as transfrom_module_0 } from "./module/init.js"; import { add_import as add_import_0 } from "./module/import.js"; import { add_bool as add_bool_0 } from "./literals/keyword.js"; import { add_number as add_number_0 } from "./literals/number.js"; import { add_string as add_string_0 } from "./literals/string.js"; import { add_list as add_list_0 } from "./literals/list.js"; import { add_record as add_record_0 } from "./literals/record.js"; import { add_conditionals as add_conditionals_0 } from "./conditionals/init.js"; import { add_logical as add_logical_0 } from "./logical/init.js"; import { add_in as add_in_0 } from "./logical/in.js"; import { add_arithmitic as add_arithmitic_0 } from "./arithmitic/init.js"; import { add_comparison as add_comparison_0 } from "./comparison/init.js"; import { add_funcs as add_funcs_0 } from "./func/init.js"; import { add_calls as add_calls_0 } from "./call/call.js"; import { add_jsx as add_jsx_0 } from "./jsx/init.js"; import { add_async as add_async_0 } from "./async/init.js"; const add_transformers_0 = ctx_0 => { const ppr_0 = add_module_0(ctx_0); const ppr_1 = add_import_0(ppr_0); const ppr_2 = add_bool_0(ppr_1); const ppr_3 = add_number_0(ppr_2); const ppr_4 = add_string_0(ppr_3); const ppr_5 = add_list_0(ppr_4); const ppr_6 = add_record_0(ppr_5); const ppr_7 = add_in_0(ppr_6); const ppr_8 = add_logical_0(ppr_7); const ppr_9 = add_comparison_0(ppr_8); const ppr_10 = add_arithmitic_0(ppr_9); const ppr_11 = add_async_0(ppr_10); const ppr_12 = add_funcs_0(ppr_11); const ppr_13 = add_conditionals_0(ppr_12); const ppr_14 = add_calls_0(ppr_13); const ppr_15 = add_jsx_0(ppr_14); return ppr_15; }; const prepare_rets_0 = (...args_33) => { prepare_rets_0: do { const dlst_0 = args_33[0]; const hdm_0 = dlst_0[0]; const expr_0 = undefined === hdm_0 ? false : hdm_0; const tail_2 = dlst_0.slice(1); const ctx_1 = args_33[1]; /* istanbul ignore else */ if (expr_0 === false) { return ctx_1; } /* istanbul ignore else */ if (null != expr_0) { const itm_0 = expr_0[0]; /* istanbul ignore else */ if (null != itm_0) { /* istanbul ignore else */ if (itm_0.f === `ac`) { const next_ctx_0 = update_value_0(expr_0[0].args[0], { res_ids: expr_0[1] }, ctx_1); args_33 = [tail_2, next_ctx_0]; continue prepare_rets_0; } } } args_33 = [tail_2, ctx_1]; continue prepare_rets_0; } while (true); }; const prepare_exports_0 = (...args_34) => { prepare_exports_0: do { const dlst_2 = args_34[0]; const hdm_1 = dlst_2[0]; const expr_1 = undefined === hdm_1 ? false : hdm_1; const tail_9 = dlst_2.slice(1); const ctx_2 = args_34[1]; const rec_id_0 = args_34[2]; /* istanbul ignore else */ if (expr_1 === false) { return ctx_2; } /* istanbul ignore else */ if (null != expr_1) { const itm_7 = expr_1[0]; /* istanbul ignore else */ if (null != itm_7) { /* istanbul ignore else */ if (itm_7.f === `mod`) { args_34 = [tail_9, ctx_2, expr_1[0].args[0]]; continue prepare_exports_0; } } } /* istanbul ignore else */ if (null != expr_1) { const itm_2 = expr_1[0]; /* istanbul ignore else */ if (null != itm_2) { /* istanbul ignore else */ if (itm_2.f === `rec_s`) { const itm_4 = expr_1[1]; /* istanbul ignore else */ if (null != itm_4) { const itm_5 = itm_4[0]; /* istanbul ignore else */ if (null != itm_5) { /* istanbul ignore else */ if (itm_5.i === rec_id_0.i) { const val_6 = expr_1[0].args; const next_ctx_1 = update_value_0(val_6[2], { inline: false }, ctx_2); args_34 = [tail_9, next_ctx_1, val_6[0]]; continue prepare_exports_0; } } } } } } args_34 = [tail_9, ctx_2, rec_id_0]; continue prepare_exports_0; } while (true); }; const prepare_imports_0 = (...args_35) => { prepare_imports_0: do { const dlst_5 = args_35[0]; const hdm_2 = dlst_5[0]; const expr_2 = undefined === hdm_2 ? false : hdm_2; const tail_23 = dlst_5.slice(1); const ctx_3 = args_35[1]; /* istanbul ignore else */ if (expr_2 === false) { return ctx_3; } /* istanbul ignore else */ if (null != expr_2) { const itm_9 = expr_2[0]; /* istanbul ignore else */ if (null != itm_9) { /* istanbul ignore else */ if (itm_9.f === `imp`) { const next_ctx_2 = update_value_0(expr_2[0].args[0], { refs: 1 }, ctx_3); args_35 = [tail_23, next_ctx_2]; continue prepare_imports_0; } } } args_35 = [tail_23, ctx_3]; continue prepare_imports_0; } while (true); }; const prepare_inlinable_0 = (...args_36) => { prepare_inlinable_0: do { const dlst_7 = args_36[0]; const hdm_3 = dlst_7[0]; const expr_3 = undefined === hdm_3 ? false : hdm_3; const tail_29 = dlst_7.slice(1); const ctx_4 = args_36[1]; /* istanbul ignore else */ if (expr_3 === false) { return ctx_4; } /* istanbul ignore else */ if (null != expr_3) { const itm_22 = expr_3[0]; /* istanbul ignore else */ if (null != itm_22) { /* istanbul ignore else */ if (itm_22.f === `af`) { const next_ctx_7 = update_value_0(expr_3[1][0], { inline: false }, ctx_4); args_36 = [tail_29, next_ctx_7]; continue prepare_inlinable_0; } } } /* istanbul ignore else */ if (null != expr_3) { const itm_20 = expr_3[0]; /* istanbul ignore else */ if (null != itm_20) { /* istanbul ignore else */ if (itm_20.f === `wt`) { const next_ctx_6 = update_value_0(expr_3[1][0], { inline: false }, ctx_4); args_36 = [tail_29, next_ctx_6]; continue prepare_inlinable_0; } } } /* istanbul ignore else */ if (null != expr_3) { const itm_18 = expr_3[0]; /* istanbul ignore else */ if (null != itm_18) { /* istanbul ignore else */ if (itm_18.f === `str`) { const next_ctx_5 = update_value_0(expr_3[1][0], { tp: `str` }, ctx_4); args_36 = [tail_29, next_ctx_5]; continue prepare_inlinable_0; } } } /* istanbul ignore else */ if (null != expr_3) { const itm_15 = expr_3[0]; /* istanbul ignore else */ if (null != itm_15) { /* istanbul ignore else */ if (itm_15.f === `jxe`) { const elem_id_0 = expr_3[0].args[0]; const value_4 = get_value_0(elem_id_0, ctx_4); let ret_8; ret_8: { /* istanbul ignore else */ if (null != value_4) { /* istanbul ignore else */ if (value_4.tp === `str`) { ret_8 = ctx_4; /* istanbul ignore next */ break ret_8; } } const result_30 = update_value_0(elem_id_0, { inline: false }, ctx_4); ret_8 = result_30; /* istanbul ignore next */ break ret_8; } const next_ctx_4 = ret_8; args_36 = [tail_29, next_ctx_4]; continue prepare_inlinable_0; } } } /* istanbul ignore else */ if (null != expr_3) { const itm_13 = expr_3[0]; /* istanbul ignore else */ if (null != itm_13) { /* istanbul ignore else */ if (true === _in_(itm_13.f, [`int`, `float`, `bool`])) { const next_ctx_3 = update_value_0(expr_3[1][0], { inline: true }, ctx_4); args_36 = [tail_29, next_ctx_3]; continue prepare_inlinable_0; } } } /* istanbul ignore else */ if (null != expr_3) { const itm_11 = expr_3[0]; /* istanbul ignore else */ if (null != itm_11) { /* istanbul ignore else */ if (true === _in_(itm_11.f, [`fn`, `cn`])) { args_36 = [[...expr_3[0].args[1], ...tail_29], ctx_4]; continue prepare_inlinable_0; } } } args_36 = [tail_29, ctx_4]; continue prepare_inlinable_0; } while (true); }; const transform_ir_0 = (input_exprs_0, options_0) => { const exprs_4 = replace_idents_0(input_exprs_0); const rev_expr_0 = reverse_0(exprs_4); const ppr_16 = (prtl_0 => { const pfn_17 = init_ctx_0(exprs_4, prtl_0); return pfn_17; })(options_0); const ppr_17 = (prtl_1 => { const pfn_19 = prepare_rets_0(rev_expr_0, prtl_1); return pfn_19; })(ppr_16); const ppr_18 = (prtl_2 => { const pfn_21 = prepare_imports_0(rev_expr_0, prtl_2); return pfn_21; })(ppr_17); const ppr_19 = (prtl_3 => { const pfn_23 = prepare_exports_0(rev_expr_0, prtl_3); return pfn_23; })(ppr_18); const ppr_20 = (prtl_4 => { const pfn_25 = prepare_inlinable_0(exprs_4, prtl_4); return pfn_25; })(ppr_19); const ppr_21 = (prtl_5 => { const pfn_27 = add_transformers_0(prtl_5); return pfn_27; })(ppr_20); const result_46 = transfrom_module_0(exprs_4, ppr_21); return result_46; }; export const add_transformers = add_transformers_0, prepare_rets = prepare_rets_0, prepare_exports = prepare_exports_0, prepare_imports = prepare_imports_0, prepare_inlinable = prepare_inlinable_0, transform_ir = transform_ir_0;