diff options
author | Russ Cox <rsc@golang.org> | 2009-11-08 23:22:06 -0800 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2009-11-08 23:22:06 -0800 |
commit | 2546155a816759168ca046ad8da001e93802b86f (patch) | |
tree | 8b656793456b6ef60f10dc506313d0e46a78c836 /src/cmd/gc/swt.c | |
parent | b5a6d8e2c19d1f79d644c114fef7964496f57ce2 (diff) | |
download | golang-2546155a816759168ca046ad8da001e93802b86f.tar.gz |
bug212, bug213.
R=ken
http://go/go-review/1026032
Diffstat (limited to 'src/cmd/gc/swt.c')
-rw-r--r-- | src/cmd/gc/swt.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/cmd/gc/swt.c b/src/cmd/gc/swt.c index 1cd4cfaa8..952c47246 100644 --- a/src/cmd/gc/swt.c +++ b/src/cmd/gc/swt.c @@ -313,9 +313,13 @@ casebody(Node *sw, Node *typeswvar) // botch - shouldnt fall thru declaration last = stat->end->n; - if(last->op == OXFALL) + if(last->op == OXFALL) { + if(typeswvar) { + setlineno(last); + yyerror("cannot fallthrough in type switch"); + } last->op = OFALL; - else + } else stat = list(stat, br); } @@ -771,7 +775,7 @@ walkswitch(Node *sw) sw->ntest = nodbool(1); typecheck(&sw->ntest, Erv); } - + if(sw->ntest->op == OTYPESW) { typeswitch(sw); //dump("sw", sw); |