X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=src%2Ftypes%2Fdecl_arg.c;h=fa5d977611a898a6bcf784ddc7986b5b30df151e;hb=698841dfdd4d70d24e0b7af25ac7100bc2cb26a4;hp=f9ed34766965ac8109b0618947bab22f25632bbc;hpb=2fa436074ca9a5e87f39b696de832fa2188fcfc6;p=m6w6%2Fext-psi diff --git a/src/types/decl_arg.c b/src/types/decl_arg.c index f9ed347..fa5d977 100644 --- a/src/types/decl_arg.c +++ b/src/types/decl_arg.c @@ -23,7 +23,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *******************************************************************************/ -#include "php_psi_stdinc.h" +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# include "php_config.h" +#endif #include #include "data.h" @@ -31,7 +35,7 @@ struct psi_decl_arg *psi_decl_arg_init(struct psi_decl_type *type, struct psi_decl_var *var) { - struct psi_decl_arg *arg = calloc(1, sizeof(*arg)); + struct psi_decl_arg *arg = pecalloc(1, sizeof(*arg), 1); arg->token = var->token; arg->type = type; arg->var = var; @@ -57,17 +61,17 @@ void psi_decl_arg_free(struct psi_decl_arg **arg_ptr) } } -void psi_decl_arg_dump(int fd, struct psi_decl_arg *arg, unsigned level) +void psi_decl_arg_dump(struct psi_dump *dump, struct psi_decl_arg *arg, unsigned level) { if (arg->type->type == PSI_T_FUNCTION) { - psi_decl_type_dump(fd, arg->type->real.func->func->type, level); + psi_decl_type_dump(dump, arg->type->real.func->func->type, level); if (arg->type->real.func->func->type->type == PSI_T_FUNCTION) { - dprintf(fd, "("); + PSI_DUMP(dump, "("); } - dprintf(fd, " %s(*%s)", + PSI_DUMP(dump, " %s(*%s)", psi_t_indirection(arg->var->pointer_level - !! arg->var->array_size), arg->var->name->val); - dprintf(fd, "("); + PSI_DUMP(dump, "("); if (arg->type->real.func->args) { size_t j = 0; struct psi_decl_arg *farg; @@ -75,40 +79,40 @@ void psi_decl_arg_dump(int fd, struct psi_decl_arg *arg, unsigned level) ++level; while (psi_plist_get(arg->type->real.func->args, j++, &farg)) { if (j > 1) { - dprintf(fd, ", "); + PSI_DUMP(dump, ", "); } - psi_decl_arg_dump(fd, farg, level); + psi_decl_arg_dump(dump, farg, level); } --level; if (arg->type->real.func->varargs) { - dprintf(fd, ", ..."); + PSI_DUMP(dump, ", ..."); } } - dprintf(fd, ")"); + PSI_DUMP(dump, ")"); if (arg->type->real.func->func->type->type == PSI_T_FUNCTION) { struct psi_decl *decl = arg->type->real.func->func->type->real.func; - dprintf(fd, "("); + PSI_DUMP(dump, "("); if (decl->args) { size_t i; struct psi_decl_arg *arg; for (i = 0; psi_plist_get(decl->args, i, &arg); ++i) { if (i) { - dprintf(fd, ", "); + PSI_DUMP(dump, ", "); } - psi_decl_arg_dump(fd, arg, 0); + psi_decl_arg_dump(dump, arg, 0); } if (decl->varargs) { - dprintf(fd, ", ..."); + PSI_DUMP(dump, ", ..."); } } - dprintf(fd, "))"); + PSI_DUMP(dump, "))"); } } else { - psi_decl_type_dump(fd, arg->type, level); - dprintf(fd, " "); - psi_decl_var_dump(fd, arg->var); + psi_decl_type_dump(dump, arg->type, level); + PSI_DUMP(dump, " "); + psi_decl_var_dump(dump, arg->var); } } @@ -118,8 +122,10 @@ bool psi_decl_arg_validate(struct psi_data *data, struct psi_decl_arg *arg, if (!psi_decl_type_validate(data, arg->type, NULL, scope)) { if (!arg->var->pointer_level) { data->error(data, arg->type->token, PSI_WARNING, - "Cannot use '%s' as type for '%s'%s%s", arg->type->name, - arg->var->name, *data->last_error ? ": " : "", data->last_error); + "Cannot use '%s' as type for '%s'%s%s", + arg->type->name->val, + arg->var->name->val, + *data->last_error ? ": " : "", data->last_error); return false; } } @@ -139,7 +145,8 @@ bool psi_decl_arg_validate_typedef(struct psi_data *data, def->type->type = PSI_T_POINTER; } else { data->error(data, def->token, PSI_WARNING, - "Type '%s' cannot be aliased to 'void'", def->type->name->val); + "Type '%s' cannot be aliased to 'void'", + def->type->name->val); return false; } } else if (!psi_decl_type_validate(data, def->type, def, scope)) { @@ -160,8 +167,10 @@ bool psi_decl_arg_validate_typedef(struct psi_data *data, break; } data->error(data, def->token, PSI_WARNING, - "Type '%s' cannot be aliased to '%s%s'%s%s", def->var->name, pre, - def->type->name->val, *data->last_error ? ": " : "", data->last_error); + "Type '%s' cannot be aliased to '%s%s'%s%s", + def->var->name->val, pre, + def->type->name->val, + *data->last_error ? ": " : "", data->last_error); return false; } @@ -264,7 +273,7 @@ struct psi_decl_arg *psi_decl_arg_get_by_var(struct psi_decl_var *var, return var->arg = arg; } - if (func && !zend_string_equals(var->name, func->var->name)) { + if (func && zend_string_equals(var->name, func->var->name)) { return var->arg = func; }