mirror of
https://github.com/golang/go
synced 2024-11-23 07:30:05 -07: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
@ -1053,6 +1053,7 @@ orderexpr(Node **np, Order *order)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case ORECV:
|
case ORECV:
|
||||||
|
orderexpr(&n->left, order);
|
||||||
n = ordercopyexpr(n, n->type, order, 1);
|
n = ordercopyexpr(n, n->type, order, 1);
|
||||||
break;
|
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 New Issue
Block a user