blob: c725829d13293aa8817b6ee2f239d8788728910e [file] [log] [blame]
Russ Coxd33d7632009-05-22 09:53:25 -07001// errchk $G -e $D/$F.go
2
3// Copyright 2009 The Go Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
7package main
8
9var (
Rob Pike4f61fc92010-09-04 10:36:13 +100010 cr <-chan int
11 cs chan<- int
Russ Coxf4e76d82011-01-31 18:36:28 -050012 c chan int
Russ Coxd33d7632009-05-22 09:53:25 -070013)
14
15func main() {
Russ Coxf4e76d82011-01-31 18:36:28 -050016 cr = c // ok
17 cs = c // ok
18 c = cr // ERROR "illegal types|incompatible|cannot"
19 c = cs // ERROR "illegal types|incompatible|cannot"
20 cr = cs // ERROR "illegal types|incompatible|cannot"
21 cs = cr // ERROR "illegal types|incompatible|cannot"
Russ Coxd33d7632009-05-22 09:53:25 -070022
Russ Coxf4e76d82011-01-31 18:36:28 -050023 c <- 0 // ok
24 <-c // ok
25 //TODO(rsc): uncomment when this syntax is valid for receive+check closed
26 // x, ok := <-c // ok
27 // _, _ = x, ok
Russ Coxd33d7632009-05-22 09:53:25 -070028
Russ Coxf4e76d82011-01-31 18:36:28 -050029 cr <- 0 // ERROR "send"
30 <-cr // ok
31 //TODO(rsc): uncomment when this syntax is valid for receive+check closed
32 // x, ok = <-cr // ok
33 // _, _ = x, ok
Russ Coxd33d7632009-05-22 09:53:25 -070034
Russ Coxf4e76d82011-01-31 18:36:28 -050035 cs <- 0 // ok
36 <-cs // ERROR "receive"
37 ////TODO(rsc): uncomment when this syntax is valid for receive+check closed
38 //// x, ok = <-cs // ERROR "receive"
39 //// _, _ = x, ok
Russ Coxd33d7632009-05-22 09:53:25 -070040
41 select {
Russ Coxf4e76d82011-01-31 18:36:28 -050042 case c <- 0: // ok
43 case x := <-c: // ok
Rob Pike4f61fc92010-09-04 10:36:13 +100044 _ = x
Russ Coxd33d7632009-05-22 09:53:25 -070045
Russ Coxf4e76d82011-01-31 18:36:28 -050046 case cr <- 0: // ERROR "send"
47 case x := <-cr: // ok
Rob Pike4f61fc92010-09-04 10:36:13 +100048 _ = x
Russ Coxd33d7632009-05-22 09:53:25 -070049
Russ Coxf4e76d82011-01-31 18:36:28 -050050 case cs <- 0: // ok
51 case x := <-cs: // ERROR "receive"
Rob Pike4f61fc92010-09-04 10:36:13 +100052 _ = x
Russ Coxd33d7632009-05-22 09:53:25 -070053 }
54}