]> Cypherpunks repositories - gostls13.git/commitdiff
channel direction tests
authorRuss Cox <rsc@golang.org>
Fri, 22 May 2009 16:53:25 +0000 (09:53 -0700)
committerRuss Cox <rsc@golang.org>
Fri, 22 May 2009 16:53:25 +0000 (09:53 -0700)
(will submit with compiler fixes).

R=r
DELTA=44  (44 added, 0 deleted, 0 changed)
OCL=29211
CL=29248

test/chan/perm.go [new file with mode: 0644]

diff --git a/test/chan/perm.go b/test/chan/perm.go
new file mode 100644 (file)
index 0000000..31ab840
--- /dev/null
@@ -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"
+       }
+}