finally, a correct fix

This commit is contained in:
David Anderson 2006-01-07 05:39:40 +00:00
parent 69b6ed5f56
commit 3b79a063b6

View File

@ -356,10 +356,6 @@ static int skim(int *opstr,void (*testfunc)(int),int dropval,int endval,
for ( ;; ) { for ( ;; ) {
lvalue=plnge1(hier,lval); /* evaluate left expression */ lvalue=plnge1(hier,lval); /* evaluate left expression */
if (!lvalue && sc_intest && (lval->ident==iARRAY && lval->ident==iREFARRAY)) {
error(33, lval->sym ? (lval->sym->name ? lval->sym->name : "-unknown") : "-unknown-"); /* array was not indexed in an expression */
}
allconst= allconst && (lval->ident==iCONSTEXPR); allconst= allconst && (lval->ident==iCONSTEXPR);
if (allconst) { if (allconst) {
if (hits) { if (hits) {
@ -379,7 +375,13 @@ static int skim(int *opstr,void (*testfunc)(int),int dropval,int endval,
droplab=getlabel(); droplab=getlabel();
} /* if */ } /* if */
dropout(lvalue,testfunc,droplab,lval); dropout(lvalue,testfunc,droplab,lval);
if (!lvalue && sc_intest && (lval->ident==iARRAY || lval->ident==iREFARRAY)) {
error(33, lval->sym ? (lval->sym->name ? lval->sym->name : "-unknown") : "-unknown-"); /* array was not indexed in an expression */
}
} else if (hits) { /* no (more) identical operators */ } else if (hits) { /* no (more) identical operators */
if (!lvalue && sc_intest && (lval->ident==iARRAY || lval->ident==iREFARRAY)) {
error(33, lval->sym ? (lval->sym->name ? lval->sym->name : "-unknown") : "-unknown-"); /* array was not indexed in an expression */
}
dropout(lvalue,testfunc,droplab,lval); /* found at least one operator! */ dropout(lvalue,testfunc,droplab,lval); /* found at least one operator! */
ldconst(endval,sPRI); ldconst(endval,sPRI);
jumplabel(endlab=getlabel()); jumplabel(endlab=getlabel());