2014-05-15 17:16:18 -06:00
|
|
|
// compile
|
|
|
|
|
2016-04-10 15:32:26 -06:00
|
|
|
// Copyright 2014 The Go Authors. All rights reserved.
|
2014-05-15 17:16:18 -06:00
|
|
|
// Use of this source code is governed by a BSD-style
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
// /tmp/x.go:3: internal error: f &p (type *int) recorded as live on entry
|
|
|
|
|
|
|
|
package p
|
|
|
|
|
|
|
|
func f(ch chan int) *int {
|
|
|
|
select {
|
|
|
|
case p1x := <-ch:
|
|
|
|
return &p1x
|
|
|
|
default:
|
|
|
|
// ok
|
|
|
|
}
|
|
|
|
select {
|
|
|
|
case p1 := <-ch:
|
|
|
|
return &p1
|
|
|
|
default:
|
|
|
|
// ok
|
|
|
|
}
|
|
|
|
select {
|
|
|
|
case p2 := <-ch:
|
|
|
|
return &p2
|
|
|
|
case p3 := <-ch:
|
|
|
|
return &p3
|
|
|
|
default:
|
|
|
|
// ok
|
|
|
|
}
|
|
|
|
select {
|
|
|
|
case p4, ok := <-ch:
|
|
|
|
if ok {
|
|
|
|
return &p4
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
// ok
|
|
|
|
}
|
|
|
|
select {
|
|
|
|
case p5, ok := <-ch:
|
|
|
|
if ok {
|
|
|
|
return &p5
|
|
|
|
}
|
|
|
|
case p6, ok := <-ch:
|
|
|
|
if !ok {
|
|
|
|
return &p6
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
// ok
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|