// 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 <-c // ok //TODO(rsc): uncomment when this syntax is valid for receive+check closed // x, ok := <-c // ok // _, _ = x, ok cr <- 0 // ERROR "send" <-cr // ok //TODO(rsc): uncomment when this syntax is valid for receive+check closed // x, ok = <-cr // ok // _, _ = x, ok cs <- 0 // ok <-cs // ERROR "receive" ////TODO(rsc): uncomment when this syntax is valid for receive+check closed //// 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 } }