// 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|incompatible|cannot" c = cs; // ERROR "illegal types|incompatible|cannot" cr = cs; // ERROR "illegal types|incompatible|cannot" cs = cr; // ERROR "illegal types|incompatible|cannot" c <- 0; // ok ok := c <- 0; // ok _ = ok; <-c; // ok x, ok := <-c; // ok _, _ = x, ok; cr <- 0; // ERROR "send" ok = cr <- 0; // ERROR "send" _ = ok; <-cr; // ok x, ok = <-cr; // ok _, _ = x, ok; cs <- 0; // ok ok = cs <- 0; // ok _ = ok; <-cs; // ERROR "receive" x, ok = <-cs; // ERROR "receive" _, _ = x, ok; select { case c <- 0: // ok case x := <-c: // ok _ = x; case cr <- 0: // ERROR "send" case x := <-cr: // ok _ = x; case cs <- 0: // ok; case x := <-cs: // ERROR "receive" _ = x; } }