forked from enlightenment/efl
eolian: make sure to include by_ref in validation of expressions
This commit is contained in:
parent
6751f011c1
commit
917b5feb27
|
@ -109,7 +109,8 @@ static Eina_Bool _validate_type_by_ref(Validate_State *vals, Eolian_Type *tp,
|
|||
Eina_Bool by_ref, Eina_Bool move);
|
||||
static Eina_Bool _validate_expr(Eolian_Expression *expr,
|
||||
const Eolian_Type *tp,
|
||||
Eolian_Expression_Mask msk);
|
||||
Eolian_Expression_Mask msk,
|
||||
Eina_Bool by_ref);
|
||||
static Eina_Bool _validate_function(Validate_State *vals,
|
||||
Eolian_Function *func,
|
||||
Eina_Hash *nhash);
|
||||
|
@ -139,7 +140,7 @@ _ef_map_cb(const Eina_Hash *hash EINA_UNUSED, const void *key EINA_UNUSED,
|
|||
const Eolian_Enum_Type_Field *ef, Cb_Ret *sc)
|
||||
{
|
||||
if (ef->value)
|
||||
sc->succ = _validate_expr(ef->value, NULL, EOLIAN_MASK_INT);
|
||||
sc->succ = _validate_expr(ef->value, NULL, EOLIAN_MASK_INT, EINA_FALSE);
|
||||
else
|
||||
sc->succ = EINA_TRUE;
|
||||
|
||||
|
@ -400,10 +401,12 @@ _validate_type(Validate_State *vals, Eolian_Type *tp)
|
|||
|
||||
static Eina_Bool
|
||||
_validate_expr(Eolian_Expression *expr, const Eolian_Type *tp,
|
||||
Eolian_Expression_Mask msk)
|
||||
Eolian_Expression_Mask msk, Eina_Bool by_ref)
|
||||
{
|
||||
Eolian_Value val;
|
||||
if (tp)
|
||||
if (by_ref)
|
||||
val = database_expr_eval(expr->base.unit, expr, EOLIAN_MASK_NULL, NULL, NULL);
|
||||
else if (tp)
|
||||
val = database_expr_eval_type(expr->base.unit, expr, tp, NULL, NULL);
|
||||
else
|
||||
val = database_expr_eval(expr->base.unit, expr, msk, NULL, NULL);
|
||||
|
@ -420,7 +423,7 @@ _validate_param(Validate_State *vals, Eolian_Function_Parameter *param)
|
|||
if (!_validate_type_by_ref(vals, param->type, param->by_ref, param->move))
|
||||
return EINA_FALSE;
|
||||
|
||||
if (param->value && !_validate_expr(param->value, param->type, 0))
|
||||
if (param->value && !_validate_expr(param->value, param->type, 0, param->by_ref))
|
||||
return EINA_FALSE;
|
||||
|
||||
if (!_validate_doc(param->doc))
|
||||
|
@ -468,11 +471,13 @@ _validate_function(Validate_State *vals, Eolian_Function *func, Eina_Hash *nhash
|
|||
return _reset_stable(vals, was_stable, EINA_FALSE);
|
||||
|
||||
if (func->get_ret_val && !_validate_expr(func->get_ret_val,
|
||||
func->get_ret_type, 0))
|
||||
func->get_ret_type, 0,
|
||||
func->get_return_by_ref))
|
||||
return _reset_stable(vals, was_stable, EINA_FALSE);
|
||||
|
||||
if (func->set_ret_val && !_validate_expr(func->set_ret_val,
|
||||
func->set_ret_type, 0))
|
||||
func->set_ret_type, 0,
|
||||
func->set_return_by_ref))
|
||||
return _reset_stable(vals, was_stable, EINA_FALSE);
|
||||
|
||||
#define EOLIAN_PARAMS_VALIDATE(params) \
|
||||
|
@ -1434,7 +1439,7 @@ _validate_variable(Validate_State *vals, Eolian_Variable *var)
|
|||
if (!_validate_type(vals, var->base_type))
|
||||
return _reset_stable(vals, was_stable, EINA_FALSE);
|
||||
|
||||
if (var->value && !_validate_expr(var->value, var->base_type, 0))
|
||||
if (var->value && !_validate_expr(var->value, var->base_type, 0, EINA_FALSE))
|
||||
return _reset_stable(vals, was_stable, EINA_FALSE);
|
||||
|
||||
if (!_validate_doc(var->doc))
|
||||
|
|
Loading…
Reference in New Issue