aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLorenzo Stoakes <lstoakes@gmail.com>2011-05-11 23:41:59 -0400
committerRuss Cox <rsc@golang.org>2011-05-11 23:41:59 -0400
commitf58d911698e8e4690675fe276dac4795c39a9dfe (patch)
tree401ce46ac68a3f109f0b7ab1fe76afdcbdc65e8d /src
parent9d2a697fb9d04f65bb9ba6c7b2b508c263da0503 (diff)
downloadgo-f58d911698e8e4690675fe276dac4795c39a9dfe.tar.xz
gc: fix type switch error message for invalid cases.
Fixes #1606. R=rsc CC=golang-dev https://golang.org/cl/4532045
Diffstat (limited to 'src')
-rw-r--r--src/cmd/gc/swt.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/cmd/gc/swt.c b/src/cmd/gc/swt.c
index 6e8436c3c5..c2968c44bc 100644
--- a/src/cmd/gc/swt.c
+++ b/src/cmd/gc/swt.c
@@ -867,8 +867,11 @@ typecheckswitch(Node *n)
case Etype: // type switch
if(ll->n->op == OLITERAL && istype(ll->n->type, TNIL))
;
- else if(ll->n->op != OTYPE && ll->n->type != T)
+ else if(ll->n->op != OTYPE && ll->n->type != T) {
yyerror("%#N is not a type", ll->n);
+ // reset to original type
+ ll->n = n->ntest->right;
+ }
break;
}
}