From d33d76378105897c4cd4419dc68e86f14921f193 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Fri, 22 May 2009 09:53:25 -0700 Subject: [PATCH] channel direction tests (will submit with compiler fixes). R=r DELTA=44 (44 added, 0 deleted, 0 changed) OCL=29211 CL=29248 --- test/chan/perm.go | 48 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 test/chan/perm.go 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" + } +} -- 2.48.1