OSDN Git Service

Latest updates from FSF 4.7 branch
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / go.test / test / chan / perm.go
1 // 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
7 package main
8
9 var (
10         cr <-chan int
11         cs chan<- int
12         c chan int
13 )
14
15 func main() {
16         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"
22
23         c <- 0          // ok
24         ok := c <- 0    // ok
25         _ = ok
26         <-c             // ok
27         x, ok := <-c    // ok
28         _, _ = x, ok
29
30         cr <- 0 // ERROR "send"
31         ok = cr <- 0    // ERROR "send"
32         _ = ok
33         <-cr            // ok
34         x, ok = <-cr    // ok
35         _, _ = x, ok
36
37         cs <- 0 // ok
38         ok = cs <- 0    // ok
39         _ = ok
40         <-cs            // ERROR "receive"
41         x, ok = <-cs    // ERROR "receive"
42         _, _ = x, ok
43
44         select {
45         case c <- 0:    // ok
46         case x := <-c:  // ok
47                 _ = x
48
49         case cr <- 0:   // ERROR "send"
50         case x := <-cr: // ok
51                 _ = x
52
53         case cs <- 0:   // ok
54         case x := <-cs: // ERROR "receive"
55                 _ = x
56         }
57 }