if (psi_validate_stack_has_union(type_stack, u->name)) {
return true;
}
- psi_validate_stack_add_union(type_stack, u->name, u);
if (!u->size && !psi_plist_count(u->args)) {
data->error(data, u->token, PSI_WARNING,
return false;
}
+ psi_validate_stack_add_union(type_stack, u->name, u);
+
for (i = 0; psi_plist_get(u->args, i, &darg); ++i) {
darg->var->arg = darg;
if (!psi_decl_arg_validate(data, darg, type_stack)) {
+ psi_validate_stack_del_union(type_stack, u->name);
return false;
}
u->size = psi_align(size, u->align);
}
+ assert(u->size);
+
return true;
}