1// run 2 3// Copyright 2010 The Go Authors. All rights reserved. 4// Use of this source code is governed by a BSD-style 5// license that can be found in the LICENSE file 6 7// Test that a select statement proceeds when a value is ready. 8 9package main 10 11func f() *int { 12 println("BUG: called f") 13 return new(int) 14} 15 16func main() { 17 var x struct { 18 a int 19 } 20 c := make(chan int, 1) 21 c1 := make(chan int) 22 c <- 42 23 select { 24 case *f() = <-c1: 25 // nothing 26 case x.a = <-c: 27 if x.a != 42 { 28 println("BUG:", x.a) 29 } 30 } 31} 32