mirror of
https://github.com/golang/go
synced 2024-11-20 08:54:40 -07:00
cmd/gc: avoid an internal error on invalid type switch.
The error was caused by a call to implements() even when the type switch variable was not an interface. Fixes #3786. R=golang-dev, r CC=golang-dev, remy https://golang.org/cl/6354102
This commit is contained in:
parent
bd0bb2bc39
commit
1ca7bc268b
@ -889,7 +889,7 @@ typecheckswitch(Node *n)
|
||||
yyerror("%lN is not a type", ll->n);
|
||||
// reset to original type
|
||||
ll->n = n->ntest->right;
|
||||
} else if(ll->n->type->etype != TINTER && !implements(ll->n->type, t, &missing, &have, &ptr)) {
|
||||
} else if(ll->n->type->etype != TINTER && t->etype == TINTER && !implements(ll->n->type, t, &missing, &have, &ptr)) {
|
||||
if(have && !missing->broke && !have->broke)
|
||||
yyerror("impossible type switch case: %lN cannot have dynamic type %T"
|
||||
" (wrong type for %S method)\n\thave %S%hT\n\twant %S%hT",
|
||||
|
Loading…
Reference in New Issue
Block a user