fixed bugs with storage-class and void in prototype
This commit is contained in:
parent
79444acd83
commit
ccc5f10fca
1 changed files with 15 additions and 8 deletions
|
@ -77,11 +77,23 @@ add_proto(pl, ds, dc, lvl)
|
||||||
if (type->tp_fund != VOID)
|
if (type->tp_fund != VOID)
|
||||||
error("unknown %s-type", symbol2str(type->tp_fund));
|
error("unknown %s-type", symbol2str(type->tp_fund));
|
||||||
else {
|
else {
|
||||||
if (idf != (struct idf *)0)
|
if (idf != (struct idf *)0
|
||||||
|
|| ds->ds_sc_given
|
||||||
|
|| ds->ds_typequal) {
|
||||||
error("illegal use of void in argument list");
|
error("illegal use of void in argument list");
|
||||||
else {
|
pl->pl_flag |= PL_ERRGIVEN;
|
||||||
pl->pl_flag |= PL_VOID;
|
|
||||||
}
|
}
|
||||||
|
/* set PL_VOID anyway */
|
||||||
|
pl->pl_flag |= PL_VOID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ds->ds_sc_given && ds->ds_sc != REGISTER) {
|
||||||
|
if (!(pl->pl_flag & PL_ERRGIVEN)) {
|
||||||
|
if (ds->ds_sc != AUTO) {
|
||||||
|
error("illegal storage class in parameter declaration");
|
||||||
|
} else {
|
||||||
|
warning("illegal storage class in parameter declaration");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -230,11 +242,6 @@ declare_protos(dc)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Postponed storage class checking.
|
|
||||||
*/
|
|
||||||
if (def->df_sc == 0)
|
|
||||||
error("illegal storage class in parameter declaration");
|
|
||||||
|
|
||||||
def->df_level = L_FORMAL2;
|
def->df_level = L_FORMAL2;
|
||||||
stack_idf(pl->pl_idf, stl);
|
stack_idf(pl->pl_idf, stl);
|
||||||
pl = pl->next;
|
pl = pl->next;
|
||||||
|
|
Loading…
Reference in a new issue