diff options
author | Russ Cox <rsc@golang.org> | 2009-08-05 00:42:44 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2009-08-05 00:42:44 -0700 |
commit | 30e73702a2dd55ae8a3db655ea55d3f10ac8a139 (patch) | |
tree | 8892ac9dfa9deb1c105e24209e662f966c2bfdef /src/cmd/gc/select.c | |
parent | b87c44de63da4b9c1757ae49ff83b353da9f4a63 (diff) | |
download | go-30e73702a2dd55ae8a3db655ea55d3f10ac8a139.tar.gz |
delay := processing
R=ken
OCL=32772
CL=32772
Diffstat (limited to 'src/cmd/gc/select.c')
-rw-r--r-- | src/cmd/gc/select.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/cmd/gc/select.c b/src/cmd/gc/select.c index 2fd63cc7c..7a90ae2c9 100644 --- a/src/cmd/gc/select.c +++ b/src/cmd/gc/select.c @@ -66,6 +66,10 @@ typecheckselect(Node *sel) ncase->list = nil; setlineno(n); switch(n->op) { + default: + yyerror("select case must be receive, send or assign recv");; + break; + case OAS: // convert x = <-c into OSELRECV(x, c) if(n->right->op != ORECV) { @@ -123,6 +127,10 @@ walkselect(Node *sel) r = nod(OIF, N, N); r->nbody = ncase->ninit; ncase->ninit = nil; + if(n != nil) { + r->nbody = concat(r->nbody, n->ninit); + n->ninit = nil; + } if(n == nil) { // selectdefault(sel *byte); r->ntest = mkcall("selectdefault", types[TBOOL], &init, var); |