From 2314e73174c91993e2b3a5ebc8f59f1da1ce3dfd Mon Sep 17 00:00:00 2001 From: John Kerl Date: Wed, 16 Nov 2016 13:01:18 -0500 Subject: [PATCH] xval hygiene (build-break) --- c/containers/local_stack.c | 36 +++++ c/containers/local_stack.h | 3 +- c/mapping/mlr_dsl_cst_assignment_statements.c | 129 ++---------------- c/mapping/mlr_dsl_cst_for_map_statements.c | 4 +- c/mapping/mlr_dsl_cst_output_statements.c | 6 +- c/mapping/rval_evaluators.h | 6 +- c/mapping/rxval_expr_evaluators.c | 17 +-- c/todo.txt | 1 + 8 files changed, 63 insertions(+), 139 deletions(-) diff --git a/c/containers/local_stack.c b/c/containers/local_stack.c index 5ce56364e..5e512c342 100644 --- a/c/containers/local_stack.c +++ b/c/containers/local_stack.c @@ -179,6 +179,32 @@ void local_stack_frame_assign_map(local_stack_frame_t* pframe, LOCAL_STACK_TRACE(mlhmmv_level_print_stacked(pmvalue->pnext_level, 0, TRUE, TRUE, "", stdout)); } +void local_stack_frame_xassign_map(local_stack_frame_t* pframe, // xxx rename + int vardef_frame_relative_index, sllmv_t* pmvkeys, + mlhmmv_value_t new_value) // xxx by ptr +{ + LOCAL_STACK_TRACE(printf("LOCAL STACK FRAME %p SET %d\n", pframe, vardef_frame_relative_index)); + LOCAL_STACK_BOUNDS_CHECK(pframe, "ASSIGN", TRUE, vardef_frame_relative_index); + local_stack_frame_entry_t* pentry = &pframe->pvars[vardef_frame_relative_index]; + + if (!(TYPE_MASK_MAP & pentry->type_mask)) { + local_stack_frame_throw_type_xmismatch(pentry, &new_value); + } + + mlhmmv_value_t* pmvalue = &pentry->value; + + // xxx encapsulate + if (pmvalue->is_terminal) { + mv_free(&pmvalue->mlrval); + pmvalue->is_terminal = FALSE; + pmvalue->pnext_level = mlhmmv_level_alloc(); + } + mlhmmv_put_value_at_level_aux(pmvalue->pnext_level, pmvkeys->phead, &new_value); + + LOCAL_STACK_TRACE(printf("VALUE IS:\n")); + LOCAL_STACK_TRACE(mlhmmv_level_print_stacked(pmvalue->pnext_level, 0, TRUE, TRUE, "", stdout)); +} + // ---------------------------------------------------------------- static int local_stack_bounds_check_announce_first_call = TRUE; @@ -214,3 +240,13 @@ void local_stack_frame_throw_type_mismatch(local_stack_frame_entry_t* pentry, mv free(sval); exit(1); } + +void local_stack_frame_throw_type_xmismatch(local_stack_frame_entry_t* pentry, mlhmmv_value_t* pxval) { + MLR_INTERNAL_CODING_ERROR_IF(pentry->name == NULL); + char* sval = mv_alloc_format_val_quoting_strings(&pxval->mlrval); // xxx temp + fprintf(stderr, "%s: %s type assertion for variable %s unmet by value %s with type %s.\n", + MLR_GLOBALS.bargv0, type_mask_to_desc(pentry->type_mask), pentry->name, + sval, mt_describe_type_simple(pxval->mlrval.type)); // xxx temp -- needs xtype + free(sval); + exit(1); +} diff --git a/c/containers/local_stack.h b/c/containers/local_stack.h index e375bbf3e..20b788ba8 100644 --- a/c/containers/local_stack.h +++ b/c/containers/local_stack.h @@ -83,6 +83,7 @@ void local_stack_bounds_check(local_stack_frame_t* pframe, char* op, int set, in local_stack_frame_t* local_stack_frame_enter(local_stack_frame_t* pframe); void local_stack_frame_exit(local_stack_frame_t* pframe); void local_stack_frame_throw_type_mismatch(local_stack_frame_entry_t* pentry, mv_t* pval); +void local_stack_frame_throw_type_xmismatch(local_stack_frame_entry_t* pentry, mlhmmv_value_t* pxval); // xxx temp // ---------------------------------------------------------------- static inline mv_t local_stack_frame_get_non_map(local_stack_frame_t* pframe, @@ -207,7 +208,7 @@ void local_stack_frame_assign_map(local_stack_frame_t* pframe, void local_stack_frame_xassign_map(local_stack_frame_t* pframe, // xxx rename int vardef_frame_relative_index, sllmv_t* pmvkeys, - mv_t terminal_value); + mlhmmv_value_t terminal_value); // ---------------------------------------------------------------- // Frames are entered/exited for each curly-braced statement block, including diff --git a/c/mapping/mlr_dsl_cst_assignment_statements.c b/c/mapping/mlr_dsl_cst_assignment_statements.c index cdfcdab24..105156fb1 100644 --- a/c/mapping/mlr_dsl_cst_assignment_statements.c +++ b/c/mapping/mlr_dsl_cst_assignment_statements.c @@ -168,11 +168,9 @@ typedef struct _local_variable_definition_state_t { char* lhs_variable_name; int lhs_frame_relative_index; int lhs_type_mask; - rval_evaluator_t* prhs_evaluator; rxval_evaluator_t* prhs_xevaluator; } local_variable_definition_state_t; -static mlr_dsl_cst_statement_handler_t handle_local_variable_definition_from_val; static mlr_dsl_cst_statement_handler_t handle_local_variable_definition_from_xval; static mlr_dsl_cst_statement_freer_t free_local_variable_definition; @@ -190,7 +188,6 @@ mlr_dsl_cst_statement_t* alloc_local_variable_definition( pstate->lhs_variable_name = NULL; pstate->lhs_frame_relative_index = MD_UNUSED_INDEX; pstate->lhs_type_mask = 0; - pstate->prhs_evaluator = NULL; pstate->prhs_xevaluator = NULL; mlr_dsl_ast_node_t* pname_node = pnode->pchildren->phead->pvvalue; @@ -202,14 +199,9 @@ mlr_dsl_cst_statement_t* alloc_local_variable_definition( mlr_dsl_cst_statement_handler_t* pstatement_handler = NULL; mlr_dsl_ast_node_t* prhs_node = pnode->pchildren->phead->pnext->pvvalue; - pstate->prhs_xevaluator = rxval_evaluator_pure_alloc_from_ast( + pstate->prhs_xevaluator = rxval_evaluator_alloc_from_astx( // xxx rename prhs_node, pcst->pfmgr, type_inferencing, context_flags); - if (pstate->prhs_xevaluator != NULL) { - pstatement_handler = handle_local_variable_definition_from_xval; - } else { - pstate->prhs_evaluator = rval_evaluator_alloc_from_ast(prhs_node, pcst->pfmgr, type_inferencing, context_flags); - pstatement_handler = handle_local_variable_definition_from_val; - } + pstatement_handler = handle_local_variable_definition_from_xval; return mlr_dsl_cst_statement_valloc( pnode, @@ -222,30 +214,11 @@ mlr_dsl_cst_statement_t* alloc_local_variable_definition( static void free_local_variable_definition(mlr_dsl_cst_statement_t* pstatement) { local_variable_definition_state_t* pstate = pstatement->pvstate; - if (pstate->prhs_evaluator != NULL) { - pstate->prhs_evaluator->pfree_func(pstate->prhs_evaluator); - } + pstate->prhs_xevaluator->pfree_func(pstate->prhs_xevaluator); free(pstate); } -// ---------------------------------------------------------------- -static void handle_local_variable_definition_from_val( // xxx mapvar - mlr_dsl_cst_statement_t* pstatement, - variables_t* pvars, - cst_outputs_t* pcst_outputs) -{ - local_variable_definition_state_t* pstate = pstatement->pvstate; - - rval_evaluator_t* prhs_evaluator = pstate->prhs_evaluator; - mv_t val = prhs_evaluator->pprocess_func(prhs_evaluator->pvstate, pvars); - - local_stack_frame_t* pframe = local_stack_get_top_frame(pvars->plocal_stack); - local_stack_frame_define(pframe, - pstate->lhs_variable_name, pstate->lhs_frame_relative_index, - pstate->lhs_type_mask, val); -} - // ---------------------------------------------------------------- static void handle_local_variable_definition_from_xval( // xxx mapvar mlr_dsl_cst_statement_t* pstatement, @@ -267,11 +240,9 @@ static void handle_local_variable_definition_from_xval( // xxx mapvar typedef struct _nonindexed_local_variable_assignment_state_t { char* lhs_variable_name; // For error messages only: stack-index is computed by stack-allocator: int lhs_frame_relative_index; - rval_evaluator_t* prhs_evaluator; rxval_evaluator_t* prhs_xevaluator; } nonindexed_local_variable_assignment_state_t; -static mlr_dsl_cst_statement_handler_t handle_nonindexed_local_variable_assignment_from_val; static mlr_dsl_cst_statement_handler_t handle_nonindexed_local_variable_assignment_from_xval; static mlr_dsl_cst_statement_freer_t free_nonindexed_local_variable_assignment; @@ -284,7 +255,6 @@ mlr_dsl_cst_statement_t* alloc_nonindexed_local_variable_assignment(mlr_dsl_cst_ pstate->lhs_variable_name = NULL; pstate->lhs_frame_relative_index = MD_UNUSED_INDEX; - pstate->prhs_evaluator = NULL; pstate->prhs_xevaluator = NULL; MLR_INTERNAL_CODING_ERROR_IF((pnode->pchildren == NULL) || (pnode->pchildren->length != 2)); @@ -301,14 +271,9 @@ mlr_dsl_cst_statement_t* alloc_nonindexed_local_variable_assignment(mlr_dsl_cst_ mlr_dsl_cst_statement_handler_t* pstatement_handler = NULL; - pstate->prhs_xevaluator = rxval_evaluator_pure_alloc_from_ast( + pstate->prhs_xevaluator = rxval_evaluator_alloc_from_astx( // xxx rename prhs_node, pcst->pfmgr, type_inferencing, context_flags); - if (pstate->prhs_xevaluator != NULL) { - pstatement_handler = handle_nonindexed_local_variable_assignment_from_xval; - } else { - pstate->prhs_evaluator = rval_evaluator_alloc_from_ast(prhs_node, pcst->pfmgr, type_inferencing, context_flags); - pstatement_handler = handle_nonindexed_local_variable_assignment_from_val; - } + pstatement_handler = handle_nonindexed_local_variable_assignment_from_xval; return mlr_dsl_cst_statement_valloc( pnode, @@ -321,9 +286,6 @@ mlr_dsl_cst_statement_t* alloc_nonindexed_local_variable_assignment(mlr_dsl_cst_ static void free_nonindexed_local_variable_assignment(mlr_dsl_cst_statement_t* pstatement) { nonindexed_local_variable_assignment_state_t* pstate = pstatement->pvstate; - if (pstate->prhs_evaluator != NULL) { - pstate->prhs_evaluator->pfree_func(pstate->prhs_evaluator); - } if (pstate->prhs_xevaluator != NULL) { pstate->prhs_xevaluator->pfree_func(pstate->prhs_xevaluator); } @@ -331,26 +293,6 @@ static void free_nonindexed_local_variable_assignment(mlr_dsl_cst_statement_t* p free(pstate); } -// ---------------------------------------------------------------- -static void handle_nonindexed_local_variable_assignment_from_val( - mlr_dsl_cst_statement_t* pstatement, - variables_t* pvars, - cst_outputs_t* pcst_outputs) -{ - nonindexed_local_variable_assignment_state_t* pstate = pstatement->pvstate; - - rval_evaluator_t* prhs_evaluator = pstate->prhs_evaluator; - mv_t val = prhs_evaluator->pprocess_func(prhs_evaluator->pvstate, pvars); - - if (mv_is_present(&val)) { - local_stack_frame_t* pframe = local_stack_get_top_frame(pvars->plocal_stack); - local_stack_frame_assign_non_map(pframe, - pstate->lhs_frame_relative_index, val); - } else { - mv_free(&val); - } -} - // ---------------------------------------------------------------- static void handle_nonindexed_local_variable_assignment_from_xval( mlr_dsl_cst_statement_t* pstatement, @@ -375,11 +317,9 @@ typedef struct _indexed_local_variable_assignment_state_t { char* lhs_variable_name; // For error messages only: stack-index is computed by stack-allocator: int lhs_frame_relative_index; sllv_t* plhs_keylist_evaluators; - rval_evaluator_t* prhs_evaluator; rxval_evaluator_t* prhs_xevaluator; } indexed_local_variable_assignment_state_t; -static mlr_dsl_cst_statement_handler_t handle_indexed_local_variable_assignment_from_val; static mlr_dsl_cst_statement_handler_t handle_indexed_local_variable_assignment_from_xval; static mlr_dsl_cst_statement_freer_t free_indexed_local_variable_assignment; @@ -392,7 +332,6 @@ mlr_dsl_cst_statement_t* alloc_indexed_local_variable_assignment(mlr_dsl_cst_t* pstate->lhs_variable_name = NULL; pstate->lhs_frame_relative_index = MD_UNUSED_INDEX; - pstate->prhs_evaluator = NULL; pstate->prhs_xevaluator = NULL; mlr_dsl_ast_node_t* plhs_node = pnode->pchildren->phead->pvvalue; @@ -410,14 +349,9 @@ mlr_dsl_cst_statement_t* alloc_indexed_local_variable_assignment(mlr_dsl_cst_t* mlr_dsl_cst_statement_handler_t* pstatement_handler = NULL; - pstate->prhs_xevaluator = rxval_evaluator_pure_alloc_from_ast( + pstate->prhs_xevaluator = rxval_evaluator_alloc_from_astx( prhs_node, pcst->pfmgr, type_inferencing, context_flags); - if (pstate->prhs_xevaluator != NULL) { - pstatement_handler = handle_indexed_local_variable_assignment_from_xval; - } else { - pstate->prhs_evaluator = rval_evaluator_alloc_from_ast(prhs_node, pcst->pfmgr, type_inferencing, context_flags); - pstatement_handler = handle_indexed_local_variable_assignment_from_val; - } + pstatement_handler = handle_indexed_local_variable_assignment_from_xval; return mlr_dsl_cst_statement_valloc( pnode, @@ -435,42 +369,11 @@ static void free_indexed_local_variable_assignment(mlr_dsl_cst_statement_t* psta pev->pfree_func(pev); } - if (pstate->prhs_evaluator != NULL) { - pstate->prhs_evaluator->pfree_func(pstate->prhs_evaluator); - } - if (pstate->prhs_xevaluator != NULL) { - pstate->prhs_xevaluator->pfree_func(pstate->prhs_xevaluator); - } + pstate->prhs_xevaluator->pfree_func(pstate->prhs_xevaluator); free(pstate); } -// ---------------------------------------------------------------- -static void handle_indexed_local_variable_assignment_from_val( - mlr_dsl_cst_statement_t* pstatement, - variables_t* pvars, - cst_outputs_t* pcst_outputs) -{ - indexed_local_variable_assignment_state_t* pstate = pstatement->pvstate; - - rval_evaluator_t* prhs_evaluator = pstate->prhs_evaluator; - mv_t rhs_value = prhs_evaluator->pprocess_func(prhs_evaluator->pvstate, pvars); - if (mv_is_present(&rhs_value)) { - - int all_non_null_or_error = TRUE; - sllmv_t* pmvkeys = evaluate_list(pstate->plhs_keylist_evaluators, pvars, - &all_non_null_or_error); - if (all_non_null_or_error) { - local_stack_frame_t* pframe = local_stack_get_top_frame(pvars->plocal_stack); - local_stack_frame_assign_map(pframe, pstate->lhs_frame_relative_index, pmvkeys, rhs_value); - } - sllmv_free(pmvkeys); - - } else { - mv_free(&rhs_value); - } -} - // ---------------------------------------------------------------- static void handle_indexed_local_variable_assignment_from_xval( mlr_dsl_cst_statement_t* pstatement, @@ -478,23 +381,21 @@ static void handle_indexed_local_variable_assignment_from_xval( cst_outputs_t* pcst_outputs) { indexed_local_variable_assignment_state_t* pstate = pstatement->pvstate; - // xxx - - rval_evaluator_t* prhs_evaluator = pstate->prhs_evaluator; - mv_t rhs_value = prhs_evaluator->pprocess_func(prhs_evaluator->pvstate, pvars); - if (mv_is_present(&rhs_value)) { + rxval_evaluator_t* prhs_xevaluator = pstate->prhs_xevaluator; + mlhmmv_value_t rhs_xvalue = prhs_xevaluator->pprocess_func(prhs_xevaluator->pvstate, pvars); + if (!rhs_xvalue.is_terminal || mv_is_present(&rhs_xvalue.mlrval)) { int all_non_null_or_error = TRUE; sllmv_t* pmvkeys = evaluate_list(pstate->plhs_keylist_evaluators, pvars, &all_non_null_or_error); if (all_non_null_or_error) { local_stack_frame_t* pframe = local_stack_get_top_frame(pvars->plocal_stack); - local_stack_frame_assign_map(pframe, pstate->lhs_frame_relative_index, pmvkeys, rhs_value); + local_stack_frame_xassign_map(pframe, pstate->lhs_frame_relative_index, pmvkeys, rhs_xvalue); } sllmv_free(pmvkeys); } else { - mv_free(&rhs_value); + mlhmmv_free_submap(rhs_xvalue); } } @@ -535,7 +436,7 @@ mlr_dsl_cst_statement_t* alloc_oosvar_assignment(mlr_dsl_cst_t* pcst, mlr_dsl_as mlr_dsl_cst_statement_handler_t* pstatement_handler = NULL; - pstate->prhs_xevaluator = rxval_evaluator_pure_alloc_from_ast( // xxx search for others needing 'pure' + pstate->prhs_xevaluator = rxval_evaluator_alloc_from_astx( prhs_node, pcst->pfmgr, type_inferencing, context_flags); if (pstate->prhs_xevaluator != NULL) { pstatement_handler = handle_oosvar_assignment_from_xval; @@ -732,7 +633,7 @@ mlr_dsl_cst_statement_t* alloc_full_srec_assignment(mlr_dsl_cst_t* pcst, mlr_dsl pstate->prhs_xevaluator = NULL; phandler = handle_full_srec_assignment_nop; } else { - pstate->prhs_xevaluator = rxval_evaluator_alloc_from_ast( + pstate->prhs_xevaluator = rxval_evaluator_alloc_from_astx( prhs_node, pcst->pfmgr, type_inferencing, context_flags); phandler = handle_full_srec_assignment; } diff --git a/c/mapping/mlr_dsl_cst_for_map_statements.c b/c/mapping/mlr_dsl_cst_for_map_statements.c index 944ec0b27..94d05c857 100644 --- a/c/mapping/mlr_dsl_cst_for_map_statements.c +++ b/c/mapping/mlr_dsl_cst_for_map_statements.c @@ -817,7 +817,7 @@ mlr_dsl_cst_statement_t* alloc_for_map_literal(mlr_dsl_cst_t* pcst, mlr_dsl_ast_ pstate->v_type_mask = mlr_dsl_ast_node_type_to_type_mask(psubright->type); // xxx comment liberally - pstate->ptarget_xevaluator = rxval_evaluator_pure_alloc_from_ast( + pstate->ptarget_xevaluator = rxval_evaluator_alloc_from_astx( pmiddle, pcst->pfmgr, type_inferencing, context_flags); MLR_INTERNAL_CODING_ERROR_IF(pnode->subframe_var_count == MD_UNUSED_INDEX); @@ -1000,7 +1000,7 @@ mlr_dsl_cst_statement_t* alloc_for_map_literal_key_only(mlr_dsl_cst_t* pcst, mlr pstate->k_frame_relative_index = pleft->vardef_frame_relative_index; pstate->k_type_mask = mlr_dsl_ast_node_type_to_type_mask(pleft->type); - pstate->ptarget_xevaluator = rxval_evaluator_pure_alloc_from_ast( + pstate->ptarget_xevaluator = rxval_evaluator_alloc_from_astx( pmiddle, pcst->pfmgr, type_inferencing, context_flags); MLR_INTERNAL_CODING_ERROR_IF(pnode->subframe_var_count == MD_UNUSED_INDEX); diff --git a/c/mapping/mlr_dsl_cst_output_statements.c b/c/mapping/mlr_dsl_cst_output_statements.c index 5e13e6ea8..2382e72de 100644 --- a/c/mapping/mlr_dsl_cst_output_statements.c +++ b/c/mapping/mlr_dsl_cst_output_statements.c @@ -572,7 +572,7 @@ mlr_dsl_cst_statement_t* alloc_emit( } else if (pkeylist_node->type == MD_AST_NODE_TYPE_MAP_LITERAL) { pstate->precord_emitter = record_emitter_from_map_literal; - pstate->prhs_xevaluator = rxval_evaluator_pure_alloc_from_ast( + pstate->prhs_xevaluator = rxval_evaluator_alloc_from_astx( pkeylist_node, pcst->pfmgr, type_inferencing, context_flags); } else { @@ -1089,7 +1089,7 @@ mlr_dsl_cst_statement_t* alloc_emit_lashed(mlr_dsl_cst_t* pcst, mlr_dsl_ast_node pitem->pemit_lashed_item_freer = map_literal_emit_lashed_item_free; pitem->pemit_keylist_evaluators = sllv_alloc(); sllv_push(pitem->pemit_keylist_evaluators, rval_evaluator_alloc_from_string("_")); - pitem->prhs_xevaluator = rxval_evaluator_pure_alloc_from_ast( + pitem->prhs_xevaluator = rxval_evaluator_alloc_from_astx( pkeylist_node, pcst->pfmgr, type_inferencing, context_flags); break; @@ -1485,7 +1485,7 @@ mlr_dsl_cst_statement_t* alloc_dump(mlr_dsl_cst_t* pcst, mlr_dsl_ast_node_t* pno } else { pstate->pdump_target_getter = ephemeral_target_getter; pstate->pdump_target_freer = dump_target_free; - pstate->pephemeral_target_xevaluator = rxval_evaluator_alloc_from_ast( + pstate->pephemeral_target_xevaluator = rxval_evaluator_alloc_from_astx( ptarget_node, pcst->pfmgr, type_inferencing, context_flags); } diff --git a/c/mapping/rval_evaluators.h b/c/mapping/rval_evaluators.h index bc82626d4..e093b42f8 100644 --- a/c/mapping/rval_evaluators.h +++ b/c/mapping/rval_evaluators.h @@ -159,11 +159,7 @@ mv_t get_srec_value_string_float_int_aux(lrece_t* pentry, lhmsmv_t* ptyped_overl // Topmost functions: // Wraps mv_t evaluator in an mlhmmv_value_t evaluator. -rxval_evaluator_t* rxval_evaluator_alloc_from_ast( - mlr_dsl_ast_node_t* past, fmgr_t* pfmgr, int type_inferencing, int context_flags); -// Does not wrap mv_t evaluator in an mlhmmv_value_t evaluator; returns NULL if the -// AST isn't map-evaluable. -rxval_evaluator_t* rxval_evaluator_pure_alloc_from_ast( +rxval_evaluator_t* rxval_evaluator_alloc_from_astx( mlr_dsl_ast_node_t* past, fmgr_t* pfmgr, int type_inferencing, int context_flags); // Next level: diff --git a/c/mapping/rxval_expr_evaluators.c b/c/mapping/rxval_expr_evaluators.c index 3fe054d03..645127401 100644 --- a/c/mapping/rxval_expr_evaluators.c +++ b/c/mapping/rxval_expr_evaluators.c @@ -17,18 +17,7 @@ // ================================================================ // ---------------------------------------------------------------- -rxval_evaluator_t* rxval_evaluator_alloc_from_ast(mlr_dsl_ast_node_t* pnode, fmgr_t* pfmgr, - int type_inferencing, int context_flags) -{ - rxval_evaluator_t* pxev = rxval_evaluator_pure_alloc_from_ast(pnode, pfmgr, type_inferencing, context_flags); - if (pxev != NULL) { - return pxev; - } else { - return rxval_evaluator_alloc_wrapping_rval(pnode, pfmgr, type_inferencing, context_flags); - } -} - -rxval_evaluator_t* rxval_evaluator_pure_alloc_from_ast(mlr_dsl_ast_node_t* pnode, fmgr_t* pfmgr, +rxval_evaluator_t* rxval_evaluator_alloc_from_astx(mlr_dsl_ast_node_t* pnode, fmgr_t* pfmgr, int type_inferencing, int context_flags) { switch(pnode->type) { @@ -71,7 +60,7 @@ rxval_evaluator_t* rxval_evaluator_pure_alloc_from_ast(mlr_dsl_ast_node_t* pnode break; default: - return NULL; + return rxval_evaluator_alloc_wrapping_rval(pnode, pfmgr, type_inferencing, context_flags); break; } } @@ -154,7 +143,7 @@ static map_literal_list_evaluator_t* allocate_map_literal_evaluator_from_ast( mlr_dsl_ast_node_t* pright = pchild->pchildren->phead->pnext->pvvalue; mlr_dsl_ast_node_t* pvalnode = pright->pchildren->phead->pvvalue; if (pright->type == MD_AST_NODE_TYPE_MAP_LITERAL_VALUE) { - ppair->pxval_evaluator = rxval_evaluator_alloc_from_ast(pvalnode, pfmgr, type_inferencing, context_flags); + ppair->pxval_evaluator = rxval_evaluator_alloc_from_astx(pvalnode, pfmgr, type_inferencing, context_flags); } else if (pright->type == MD_AST_NODE_TYPE_MAP_LITERAL) { ppair->is_terminal = FALSE; ppair->plist_evaluator = allocate_map_literal_evaluator_from_ast( diff --git a/c/todo.txt b/c/todo.txt index 770616b92..1de6d5c64 100644 --- a/c/todo.txt +++ b/c/todo.txt @@ -23,6 +23,7 @@ OTHER: * typeof -> include 'map' and 'srec' * dump @records after @records[NR]=$*: json "1" rather than 1 indices are b04k3d * rename dsls/ to parsers; mapping -> mappers & dsl ? +! 'Error code 1' -> clearer on regdiff fail ---------------------------------------------------------------- MAPVAR CHECKLIST: