From: Russ Cox Date: Fri, 22 May 2009 16:53:25 +0000 (-0700) Subject: channel direction tests X-Git-Tag: weekly.2009-11-06~1570 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=d33d76378105897c4cd4419dc68e86f14921f193;p=gostls13.git channel direction tests (will submit with compiler fixes). R=r DELTA=44 (44 added, 0 deleted, 0 changed) OCL=29211 CL=29248 --- diff --git a/test/chan/perm.go b/test/chan/perm.go new file mode 100644 index 0000000000..31ab840085 --- /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" + } +}