diff options
Diffstat (limited to 'test/chan/select3.go')
-rw-r--r-- | test/chan/select3.go | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/test/chan/select3.go b/test/chan/select3.go index a1a2ef50b..47941063c 100644 --- a/test/chan/select3.go +++ b/test/chan/select3.go @@ -97,13 +97,9 @@ func main() { } }) - // sending (a small number of times) to a closed channel is not specified - // but the current implementation doesn't block: test that different - // implementations behave the same - testBlock(never, func() { - for i := 0; i < 10; i++ { - closedch <- 7 - } + // sending to a closed channel panics. + testPanic(always, func() { + closedch <- 7 }) // receiving from a non-ready channel always blocks @@ -189,15 +185,24 @@ func main() { } }) - // selects with closed channels don't block + // selects with closed channels behave like ordinary operations testBlock(never, func() { select { case <-closedch: } }) - testBlock(never, func() { + testPanic(always, func() { select { case closedch <- 7: } }) + + // select should not get confused if it sees itself + testBlock(always, func() { + c := make(chan int) + select { + case c <- 1: + case <-c: + } + }) } |