summaryrefslogtreecommitdiff
path: root/src/cmd/gc/swt.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2009-11-08 23:22:06 -0800
committerRuss Cox <rsc@golang.org>2009-11-08 23:22:06 -0800
commit2546155a816759168ca046ad8da001e93802b86f (patch)
tree8b656793456b6ef60f10dc506313d0e46a78c836 /src/cmd/gc/swt.c
parentb5a6d8e2c19d1f79d644c114fef7964496f57ce2 (diff)
downloadgolang-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.c10
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);