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