This commit is contained in:
John Kerl 2016-11-28 08:54:37 -05:00
parent a0f85add92
commit dce97b285d
4 changed files with 10 additions and 11 deletions

View file

@ -601,7 +601,7 @@ static void unresolved_callsite_free(unresolved_func_callsite_state_t* pstate) {
}
// ----------------------------------------------------------------
rval_evaluator_t* fmgr_alloc_from_operator_or_function_call(fmgr_t* pfmgr, mlr_dsl_ast_node_t* pnode,
rval_evaluator_t* fmgr_alloc_provisional_from_operator_or_function_call(fmgr_t* pfmgr, mlr_dsl_ast_node_t* pnode,
int type_inferencing, int context_flags)
{
char* function_name = pnode->text;
@ -623,7 +623,7 @@ rval_evaluator_t* fmgr_alloc_from_operator_or_function_call(fmgr_t* pfmgr, mlr_d
}
// xxx XXX merge code dup
rxval_evaluator_t* fmgr_xalloc_from_operator_or_function_call(fmgr_t* pfmgr, mlr_dsl_ast_node_t* pnode,
rxval_evaluator_t* fmgr_xalloc_provisional_from_operator_or_function_call(fmgr_t* pfmgr, mlr_dsl_ast_node_t* pnode,
int type_inferencing, int context_flags)
{
char* function_name = pnode->text;
@ -637,6 +637,8 @@ rxval_evaluator_t* fmgr_xalloc_from_operator_or_function_call(fmgr_t* pfmgr, mlr
pxev->pprocess_func = NULL;
pxev->pfree_func = NULL;
// xxx needs a wrapping-rval here
// Remember this callsite to a function which may or may not have been defined yet.
// Then later we can resolve them to point to UDF bodies which have been defined.
sllv_append(pfmgr->pfunc_callsite_xevaluators_to_resolve, pxev);

View file

@ -46,10 +46,10 @@ void fmgr_free(fmgr_t* pfmgr);
void fmgr_install_udf(fmgr_t* pfmgr, udf_defsite_state_t* pdefsitate_state);
// Callsites as defined by AST nodes, with scalar-context return values
rval_evaluator_t* fmgr_alloc_from_operator_or_function_call(fmgr_t* pfmgr, mlr_dsl_ast_node_t* pnode,
rval_evaluator_t* fmgr_alloc_provisional_from_operator_or_function_call(fmgr_t* pfmgr, mlr_dsl_ast_node_t* pnode,
int type_inferencing, int context_flags);
// Callsites as defined by AST nodes, with map-context return values
rxval_evaluator_t* fmgr_xalloc_from_operator_or_function_call(fmgr_t* pfmgr, mlr_dsl_ast_node_t* pnode,
rxval_evaluator_t* fmgr_xalloc_provisional_from_operator_or_function_call(fmgr_t* pfmgr, mlr_dsl_ast_node_t* pnode,
int type_inferencing, int context_flags);
// xxx make a mark-callsite-for-resolve method

View file

@ -100,7 +100,7 @@ rval_evaluator_t* rval_evaluator_alloc_from_ast(mlr_dsl_ast_node_t* pnode, fmgr_
} else {
MLR_INTERNAL_CODING_ERROR_IF((pnode->type != MD_AST_NODE_TYPE_FUNCTION_CALLSITE)
&& (pnode->type != MD_AST_NODE_TYPE_OPERATOR));
return fmgr_alloc_from_operator_or_function_call(pfmgr, pnode, type_inferencing, context_flags);
return fmgr_alloc_provisional_from_operator_or_function_call(pfmgr, pnode, type_inferencing, context_flags);
}
}

View file

@ -57,8 +57,9 @@ rxval_evaluator_t* rxval_evaluator_alloc_from_ast(mlr_dsl_ast_node_t* pnode, fmg
break;
case MD_AST_NODE_TYPE_FUNCTION_CALLSITE:
return rxval_evaluator_alloc_from_function_callsite(
pnode, pfmgr, type_inferencing, context_flags);
return rxval_evaluator_alloc_from_function_callsite(pnode, pfmgr, type_inferencing, context_flags);
// xxx temp
// return fmgr_xalloc_provisional_from_operator_or_function_call(pfmgr, pnode, type_inferencing, context_flags);
break;
default:
@ -497,7 +498,6 @@ rxval_evaluator_t* rxval_evaluator_alloc_from_full_srec(
// ================================================================
typedef struct _rxval_evaluator_from_function_callsite_state_t {
rval_evaluator_t* prval_evaluator; // xxx temp
// xxx temp rxval_evaluator_t* pxevaluator;
} rxval_evaluator_from_function_callsite_state_t;
static boxed_xval_t rxval_evaluator_from_function_callsite_func(void* pvstate, variables_t* pvars) {
@ -514,7 +514,6 @@ static boxed_xval_t rxval_evaluator_from_function_callsite_func(void* pvstate, v
static void rxval_evaluator_from_function_callsite_free(rxval_evaluator_t* prxval_evaluator) {
rxval_evaluator_from_function_callsite_state_t* pstate = prxval_evaluator->pvstate;
pstate->prval_evaluator->pfree_func(pstate->prval_evaluator);
// xxx temp pstate->pxevaluator->pfree_func(pstate->pxevaluator);
free(pstate);
free(prxval_evaluator);
}
@ -526,8 +525,6 @@ rxval_evaluator_t* rxval_evaluator_alloc_from_function_callsite(
sizeof(rxval_evaluator_from_function_callsite_state_t));
pstate->prval_evaluator = rval_evaluator_alloc_from_ast(pnode, pfmgr, type_inferencing, context_flags);
// xxx temp pstate->pxevaluator = fmgr_xalloc_from_operator_or_function_call(pfmgr, pnode,
// xxx temp type_inferencing, context_flags);
rxval_evaluator_t* prxval_evaluator = mlr_malloc_or_die(sizeof(rxval_evaluator_t));