]> Cypherpunks.ru repositories - gostls13.git/blob - test/fixedbugs/issue13273.go
fa3815f2bbb64fd21d0b09eab34c7c3667ce9e07
[gostls13.git] / test / fixedbugs / issue13273.go
1 // errorcheck
2
3 // Copyright 2015 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 // Check that we correctly construct (and report errors)
8 // for unary expressions of the form <-x where we only
9 // know after parsing x whether <-x is a receive operation
10 // or a channel type.
11
12 package n
13
14 func f() {
15         // test case from issue 13273
16         <-chan int((chan int)(nil))
17
18         <-chan int(nil)
19         <-chan chan int(nil)
20         <-chan chan chan int(nil)
21         <-chan chan chan chan int(nil)
22         <-chan chan chan chan chan int(nil)
23
24         <-chan<-chan int(nil)
25         <-chan<-chan<-chan int(nil)
26         <-chan<-chan<-chan<-chan int(nil)
27         <-chan<-chan<-chan<-chan<-chan int(nil)
28
29         <-chan (<-chan int)(nil)
30         <-chan (<-chan (<-chan int))(nil)
31         <-chan (<-chan (<-chan (<-chan int)))(nil)
32         <-chan (<-chan (<-chan (<-chan (<-chan int))))(nil)
33
34         <-(<-chan int)(nil)
35         <-(<-chan chan int)(nil)
36         <-(<-chan chan chan int)(nil)
37         <-(<-chan chan chan chan int)(nil)
38         <-(<-chan chan chan chan chan int)(nil)
39
40         <-(<-chan<-chan int)(nil)
41         <-(<-chan<-chan<-chan int)(nil)
42         <-(<-chan<-chan<-chan<-chan int)(nil)
43         <-(<-chan<-chan<-chan<-chan<-chan int)(nil)
44
45         <-(<-chan (<-chan int))(nil)
46         <-(<-chan (<-chan (<-chan int)))(nil)
47         <-(<-chan (<-chan (<-chan (<-chan int))))(nil)
48         <-(<-chan (<-chan (<-chan (<-chan (<-chan int)))))(nil)
49
50         type _ <-<-chan int // ERROR "unexpected <-, expecting chan"
51         <-<-chan int // ERROR "unexpected <-, expecting chan|expecting {" (new parser: same error as for type decl)
52
53         type _ <-chan<-int // ERROR "unexpected int, expecting chan|expecting chan"
54         <-chan<-int // ERROR "unexpected int, expecting chan|expecting {" (new parser: same error as for type decl)
55 }