diff options
author | Russ Cox <rsc@golang.org> | 2009-05-22 09:53:25 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2009-05-22 09:53:25 -0700 |
commit | d03e3b6a9e99f67f1af79db91fc0bc5574f52060 (patch) | |
tree | 63eb2479d94749977b1f48ce156b10834445da40 /test/chan | |
parent | 13bf2461c5d12c5f6d12f3df39ecf0b137c5c4ea (diff) | |
download | golang-d03e3b6a9e99f67f1af79db91fc0bc5574f52060.tar.gz |
channel direction tests
(will submit with compiler fixes).
R=r
DELTA=44 (44 added, 0 deleted, 0 changed)
OCL=29211
CL=29248
Diffstat (limited to 'test/chan')
-rw-r--r-- | test/chan/perm.go | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/test/chan/perm.go b/test/chan/perm.go new file mode 100644 index 000000000..31ab84008 --- /dev/null +++ b/test/chan/perm.go @@ -0,0 +1,48 @@ +// errchk $G -e $D/$F.go + +// Copyright 2009 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 + +var ( + cr <-chan int; + cs chan<- int; + c chan int; +) + +func main() { + cr = c; // ok + cs = c; // ok + c = cr; // ERROR "illegal types" + c = cs; // ERROR "illegal types" + cr = cs; // ERROR "illegal types" + cs = cr; // ERROR "illegal types" + + c <- 0; // ok + ok := c <- 0; // ok + <-c; // ok + x, ok := <-c; // ok + + cr <- 0; // ERROR "send" + ok = cr <- 0; // ERROR "send" + <-cr; // ok + x, ok = <-cr; // ok + + cs <- 0; // ok + ok = cs <- 0; // ok + <-cs; // ERROR "receive" + x, ok = <-cs; // ERROR "receive" + + select { + case c <- 0: // ok + case x := <-c: // ok + + case cr <- 0: // ERROR "send" + case x := <-cr: // ok + + case cs <- 0: // ok; + case x := <-cs: // ERROR "receive" + } +} |