Commit 1926fef1 authored by Ken Thompson's avatar Ken Thompson

bogus diagnostic with

default as first case
in a switch

SVN=123398
parent c242b53d
......@@ -440,7 +440,7 @@ swgen(Node *n)
while(c1 != N) {
dynlineno = c1->lineno; // for diagnostics
if(c1->op != OCASE) {
if(s0 == C)
if(s0 == C && dflt == P)
yyerror("unreachable statements in a switch");
gen(c1);
......@@ -463,7 +463,6 @@ swgen(Node *n)
dflt = pc;
while(c2 != N) {
s = mal(sizeof(*s));
if(s0 == C)
s0 = s;
......
......@@ -116,6 +116,7 @@ loop:
walktype(n->ninit, Etop);
walktype(n->ntest, Erv);
walktype(n->nbody, Etop);
// find common type
if(n->ntest->type == T)
n->ntest->type = walkswitch(n, sw1);
......@@ -127,11 +128,9 @@ loop:
// set the type on all literals
if(n->ntest->type != T)
walkswitch(n, sw3);
walktype(n->ntest, Erv);
n = n->nincr;
goto loop;
walktype(n->ntest, Erv); // BOTCH is this right
walktype(n->nincr, Erv);
goto ret;
case OEMPTY:
if(top != Etop)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment