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