Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.0.0-20201028153306-37f0764111ff / cmd / guru / testdata / src / peers / main.go
1 package main
2
3 // Tests of channel 'peers' query.
4 // See go.tools/guru/guru_test.go for explanation.
5 // See peers.golden for expected query results.
6
7 var a2 int
8
9 func main() {
10         chA := make(chan *int)
11         a1 := 1
12         chA <- &a1
13
14         chA2 := make(chan *int, 2)
15         if a2 == 0 {
16                 chA = chA2
17         }
18
19         chB := make(chan *int)
20         b := 3
21         chB <- &b
22
23         <-chA  // @pointsto pointsto-chA "chA"
24         <-chA2 // @pointsto pointsto-chA2 "chA2"
25         <-chB  // @pointsto pointsto-chB "chB"
26
27         select {
28         case rA := <-chA: // @peers peer-recv-chA "<-"
29                 _ = rA // @pointsto pointsto-rA "rA"
30         case rB := <-chB: // @peers peer-recv-chB "<-"
31                 _ = rB // @pointsto pointsto-rB "rB"
32
33         case <-chA: // @peers peer-recv-chA' "<-"
34
35         case chA2 <- &a2: // @peers peer-send-chA' "<-"
36         }
37
38         for range chA {
39         }
40
41         close(chA) // @peers peer-close-chA "chA"
42
43         chC := make(chan *int)
44         (close)(chC) // @peers peer-close-chC "chC"
45
46         close := func(ch chan *int) chan *int {
47                 return ch
48         }
49
50         close(chC) <- &b // @peers peer-send-chC "chC"
51         <-close(chC)     // @peers peer-recv-chC "chC"
52 }