gc: Better error message for range over non-receive channel.

Fixes #2354

R=rsc
CC=golang-dev
https://golang.org/cl/5346044
This commit is contained in:
Luuk van Dijk 2011-11-06 22:14:15 +01:00
parent 0d6f857c3f
commit ea9e93862d
2 changed files with 8 additions and 1 deletions

View file

@ -46,6 +46,10 @@ typecheckrange(Node *n)
break;
case TCHAN:
if(!(t->chan & Crecv)) {
yyerror("invalid operation: range %N (receive from send-only type %T)", n->right, n->right->type);
goto out;
}
t1 = t->type;
t2 = nil;
if(count(n->list) == 2)

View file

@ -48,7 +48,10 @@ func main() {
case x := <-cs: // ERROR "receive"
_ = x
}
for _ = range cs {// ERROR "receive"
}
close(c)
close(cs)
close(cr) // ERROR "receive"