projects
/
m6w6
/
ext-psi
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
Merge branch 'slimconfigure'
[m6w6/ext-psi]
/
src
/
types
/
decl_union.c
diff --git
a/src/types/decl_union.c
b/src/types/decl_union.c
index 1d24f95e5f9d3dd45a989de69eb67a3f151639b9..5d0f1631a8f77788221a6f77e72d283abc854ced 100644
(file)
--- a/
src/types/decl_union.c
+++ b/
src/types/decl_union.c
@@
-75,15
+75,14
@@
struct psi_decl_arg *psi_decl_union_get_arg(struct psi_decl_union *u,
}
bool psi_decl_union_validate(struct psi_data *data, struct psi_decl_union *u,
}
bool psi_decl_union_validate(struct psi_data *data, struct psi_decl_union *u,
- struct psi_validate_s
tack *type_stack
)
+ struct psi_validate_s
cope *scope
)
{
size_t i, pos, len, size = 0, align;
struct psi_decl_arg *darg;
{
size_t i, pos, len, size = 0, align;
struct psi_decl_arg *darg;
- if (psi_validate_s
tack_has_union(type_stack
, u->name)) {
+ if (psi_validate_s
cope_has_union(scope
, u->name)) {
return true;
}
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,
if (!u->size && !psi_plist_count(u->args)) {
data->error(data, u->token, PSI_WARNING,
@@
-91,10
+90,13
@@
bool psi_decl_union_validate(struct psi_data *data, struct psi_decl_union *u,
return false;
}
return false;
}
+ psi_validate_scope_add_union(scope, u->name, u);
+
for (i = 0; psi_plist_get(u->args, i, &darg); ++i) {
darg->var->arg = darg;
for (i = 0; psi_plist_get(u->args, i, &darg); ++i) {
darg->var->arg = darg;
- if (!psi_decl_arg_validate(data, darg, type_stack)) {
+ if (!psi_decl_arg_validate(data, darg, scope)) {
+ psi_validate_scope_del_union(scope, u->name);
return false;
}
return false;
}
@@
-147,6
+149,8
@@
bool psi_decl_union_validate(struct psi_data *data, struct psi_decl_union *u,
u->size = psi_align(size, u->align);
}
u->size = psi_align(size, u->align);
}
+ assert(u->size);
+
return true;
}
return true;
}