types of case-labels are base-types

This commit is contained in:
ceriel 1988-04-29 09:16:51 +00:00
parent 578b8fd103
commit 69b293d86b

View File

@ -407,6 +407,7 @@ CaseLabels(t_type **ptp; register t_node **pnd;)
if (*ptp != 0 && ChkCompat(pnd, *ptp, "case label")) { if (*ptp != 0 && ChkCompat(pnd, *ptp, "case label")) {
} }
nd = *pnd; nd = *pnd;
nd->nd_type = BaseType(nd->nd_type); /* ??? */
if (! (nd->nd_type->tp_fund & T_DISCRETE) || if (! (nd->nd_type->tp_fund & T_DISCRETE) ||
nd->nd_type->tp_size > word_size) { nd->nd_type->tp_size > word_size) {
node_error(nd, "illegal type in case label"); node_error(nd, "illegal type in case label");
@ -423,7 +424,7 @@ CaseLabels(t_type **ptp; register t_node **pnd;)
} }
else if (! chk_bounds(nd->nd_left->nd_INT, else if (! chk_bounds(nd->nd_left->nd_INT,
nd->nd_right->nd_INT, nd->nd_right->nd_INT,
BaseType(nd->nd_type)->tp_fund)) { nd->nd_type->tp_fund)) {
node_error(nd, node_error(nd,
"lower bound exceeds upper bound in case label range"); "lower bound exceeds upper bound in case label range");
} }