|  | // 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; | 
|  | } | 
|  | } |