mirror of
https://github.com/golang/go
synced 2024-11-05 18:36:08 +00:00
cmd/gc: fix <-<-expr
The temporary-introducing pass was not recursing into the argumnt of a receive operation. Fixes #8011. LGTM=r R=golang-codereviews, r CC=golang-codereviews, iant, khr https://golang.org/cl/91540043
This commit is contained in:
parent
f0bdee171f
commit
a663e0a038
2 changed files with 19 additions and 0 deletions
|
@ -1053,6 +1053,7 @@ orderexpr(Node **np, Order *order)
|
|||
break;
|
||||
|
||||
case ORECV:
|
||||
orderexpr(&n->left, order);
|
||||
n = ordercopyexpr(n, n->type, order, 1);
|
||||
break;
|
||||
}
|
||||
|
|
18
test/fixedbugs/issue8011.go
Normal file
18
test/fixedbugs/issue8011.go
Normal file
|
@ -0,0 +1,18 @@
|
|||
// run
|
||||
|
||||
// Copyright 2014 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package main
|
||||
|
||||
func main() {
|
||||
c := make(chan chan int, 1)
|
||||
c1 := make(chan int, 1)
|
||||
c1 <- 42
|
||||
c <- c1
|
||||
x := <-<-c
|
||||
if x != 42 {
|
||||
println("BUG:", x, "!= 42")
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue