case LONG:
break;
case ENUM:
+ /* test the admissibility of the operator */
if ( is_test_op(oper) || oper == '=' || oper == PARCOMMA ||
- oper == ',' || oper == ':' ||
- ( !options['R'] &&
- (is_arith_op(oper) || is_asgn_op(oper))
- )
- )
- {}
+ oper == ',' || oper == ':'
+ ) {
+ /* allowed by K & R */
+ }
+ else
+ if (!options['R']) {
+ /* allowed by us */
+ }
else
expr_warning(*expp, "%s on enum", symbol2str(oper));
int2int(expp, int_type);
break;
-#ifndef NOFLOAT
+#ifndef NOFLOAT
case FLOAT:
float2float(expp, double_type);
break;
case DOUBLE:
break;
-#endif NOFLOAT
+#endif NOFLOAT
#ifndef NOBITFIELD
case FIELD:
field2arith(expp);
}
}
-array_subscript(expr)
+check_array_subscript(expr)
register struct expr *expr;
{
arith size = expr->VL_VALUE;
expr->VL_VALUE = (arith)-1;
}
else
- if (size & ~max_unsigned) { /* absolute ridiculous */
+ if (size & ~max_unsigned) { /* absolutely ridiculous */
expr_error(expr, "overflow in array size");
expr->VL_VALUE = (arith)1;
}