X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Ftypes%2Fset_func.c;h=c6ab80fd0ac091aead128c5ad432751bd62f3fbd;hb=ad2c22df5e451fffecc7b7ebdc9c5a4bb36e543e;hp=fff7c88c30b0d955cbf87e412418eac357562bf1;hpb=9bcb1df0786a8193d65949c857baaba2f4296e84;p=m6w6%2Fext-psi diff --git a/src/types/set_func.c b/src/types/set_func.c index fff7c88..c6ab80f 100644 --- a/src/types/set_func.c +++ b/src/types/set_func.c @@ -164,7 +164,8 @@ static inline bool psi_set_func_validate_to_array(struct psi_data *data, return true; default: - complex: switch (psi_decl_type_get_real(set_var->arg->type)->type) { + complex: + switch (psi_decl_type_get_real(set_var->arg->type)->type) { case PSI_T_UNION: case PSI_T_STRUCT: break; @@ -185,8 +186,8 @@ static inline bool psi_set_func_validate_to_recursive(struct psi_data *data, struct psi_impl *impl) { if (!set->outer - || set->outer->kind - != PSI_SET_FUNC|| set->outer->data.func->type != PSI_T_TO_ARRAY) { + || set->outer->kind != PSI_SET_FUNC + || set->outer->data.func->type != PSI_T_TO_ARRAY) { data->error(data, func->token, PSI_WARNING, "Expected to_array() as parent to recursion in `set` statement" " of implementation '%s'", @@ -203,8 +204,9 @@ static inline bool psi_set_func_validate_to_recursive(struct psi_data *data, bool psi_set_func_validate(struct psi_data *data, struct psi_set_func *func, struct psi_set_exp *set, struct psi_impl *impl, struct psi_decl *cb_decl) { - if (!psi_decl_var_validate(data, func->var, impl->decl, NULL, set) - && !psi_decl_var_validate(data, func->var, cb_decl, NULL, NULL) + if (!func->var->arg + && !psi_decl_var_validate(data, func->var, impl, impl->decl, NULL, set) + && !psi_decl_var_validate(data, func->var, NULL, cb_decl, NULL, NULL) && !psi_impl_get_temp_let_arg(impl, func->var)) { data->error(data, func->var->token, PSI_WARNING, "Unknown variable '%s' in implementation %s", @@ -273,12 +275,6 @@ bool psi_set_func_validate(struct psi_data *data, struct psi_set_func *func, return false; } break; - case PSI_T_ELLIPSIS: - abort(); - if (!psi_set_func_validate_to_recursive(data, func, set, impl)) { - return false; - } - break; default: data->error(data, func->token, PSI_WARNING, "Unknown cast '%s' in `set` statement of implementation '%s'",