return 1;
}
+static int psi_sort_struct_arg_cmp(const void *_a, const void *_b) {
+ decl_arg *a = *(decl_arg **)_a, *b = *(decl_arg **)_b;
+
+ if (a->layout->pos == b->layout->pos) {
+ if (a->layout->len == b->layout->len) {
+ return 0;
+ } else if (a->layout->len > b->layout->len) {
+ return -1;
+ } else {
+ return 1;
+ }
+ } else if (a->layout->pos > b->layout->pos) {
+ return 1;
+ } else {
+ return -1;
+ }
+}
+static void psi_sort_struct_arg_swp(void *a, void *b) {
+ decl_arg **_a = a, **_b = b, *_c;
+
+ _c = *_b;
+ *_b = *_a;
+ *_a = _c;
+}
+static inline void psi_sort_struct_args(decl_struct *s) {
+ zend_insert_sort(s->args->args, s->args->count, sizeof(*s->args->args),
+ psi_sort_struct_arg_cmp, psi_sort_struct_arg_swp);
+}
+
static inline int validate_decl_struct(PSI_Data *data, decl_struct *s) {
size_t i;
s->size = darg->layout->pos + darg->layout->len;
}
}
+
+ psi_sort_struct_args(s);
+
return 1;
}
dprintf(fd, ", ");
dump_num_exp(fd, set->num);
}
- if (set->inner) {
+ if (set->inner && set->func->type != PSI_T_ELLIPSIS) {
dprintf(fd, ",\n");
for (i = 0; i < set->count; ++i) {
dump_impl_set_value(fd, set->inner[i], level+1);
dprintf(fd, "%s($%s)", let->val->data.func->name,
let->val->data.func->var->name);
break;
+ case PSI_LET_NUMEXP:
+ dump_num_exp(fd, let->val->data.num);
+ break;
EMPTY_SWITCH_DEFAULT_CASE();
}