1 // Copyright 2013 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 // terminating statements
6
7 package stmt1
8
9 func _() {}
10
11 func _() int {} /* ERROR "missing return" */
12
13 func _() int { panic(0) }
14 func _() int { (panic(0)) }
15
16 // block statements
17 func _(x, y int) (z int) {
18 {
19 return
20 }
21 }
22
23 func _(x, y int) (z int) {
24 {
25 return; ; ; // trailing empty statements are ok
26 }
27 ; ; ;
28 }
29
30 func _(x, y int) (z int) {
31 {
32 }
33 } /* ERROR "missing return" */
34
35 func _(x, y int) (z int) {
36 {
37 ; ; ;
38 }
39 ; ; ;
40 } /* ERROR "missing return" */
41
42 // if statements
43 func _(x, y int) (z int) {
44 if x < y { return }
45 return 1
46 }
47
48 func _(x, y int) (z int) {
49 if x < y { return; ; ; ; }
50 return 1
51 }
52
53 func _(x, y int) (z int) {
54 if x < y { return }
55 return 1; ;
56 }
57
58 func _(x, y int) (z int) {
59 if x < y { return }
60 } /* ERROR "missing return" */
61
62 func _(x, y int) (z int) {
63 if x < y {
64 } else { return 1
65 }
66 } /* ERROR "missing return" */
67
68 func _(x, y int) (z int) {
69 if x < y { return
70 } else { return
71 }
72 }
73
74 // for statements
75 func _(x, y int) (z int) {
76 for x < y {
77 return
78 }
79 } /* ERROR "missing return" */
80
81 func _(x, y int) (z int) {
82 for {
83 return
84 }
85 }
86
87 func _(x, y int) (z int) {
88 for {
89 return; ; ; ;
90 }
91 }
92
93 func _(x, y int) (z int) {
94 for {
95 return
96 break
97 }
98 ; ; ;
99 } /* ERROR "missing return" */
100
101 func _(x, y int) (z int) {
102 for {
103 for { break }
104 return
105 }
106 }
107
108 func _(x, y int) (z int) {
109 for {
110 for { break }
111 return ; ;
112 }
113 ;
114 }
115
116 func _(x, y int) (z int) {
117 L: for {
118 for { break L }
119 return
120 }
121 } /* ERROR "missing return" */
122
123 // switch statements
124 func _(x, y int) (z int) {
125 switch x {
126 case 0: return
127 default: return
128 }
129 }
130
131 func _(x, y int) (z int) {
132 switch x {
133 case 0: return;
134 default: return; ; ;
135 }
136 }
137
138 func _(x, y int) (z int) {
139 switch x {
140 case 0: return
141 }
142 } /* ERROR "missing return" */
143
144 func _(x, y int) (z int) {
145 switch x {
146 case 0: return
147 case 1: break
148 }
149 } /* ERROR "missing return" */
150
151 func _(x, y int) (z int) {
152 switch x {
153 case 0: return
154 default:
155 switch y {
156 case 0: break
157 }
158 panic(0)
159 }
160 }
161
162 func _(x, y int) (z int) {
163 switch x {
164 case 0: return
165 default:
166 switch y {
167 case 0: break
168 }
169 panic(0); ; ;
170 }
171 ;
172 }
173
174 func _(x, y int) (z int) {
175 L: switch x {
176 case 0: return
177 default:
178 switch y {
179 case 0: break L
180 }
181 panic(0)
182 }
183 } /* ERROR "missing return" */
184
185 // select statements
186 func _(ch chan int) (z int) {
187 select {}
188 } // nice!
189
190 func _(ch chan int) (z int) {
191 select {}
192 ; ;
193 }
194
195 func _(ch chan int) (z int) {
196 select {
197 default: break
198 }
199 } /* ERROR "missing return" */
200
201 func _(ch chan int) (z int) {
202 select {
203 case <-ch: return
204 default: break
205 }
206 } /* ERROR "missing return" */
207
208 func _(ch chan int) (z int) {
209 select {
210 case <-ch: return
211 default:
212 for i := 0; i < 10; i++ {
213 break
214 }
215 return
216 }
217 }
218
219 func _(ch chan int) (z int) {
220 select {
221 case <-ch: return; ; ;
222 default:
223 for i := 0; i < 10; i++ {
224 break
225 }
226 return; ; ;
227 }
228 ; ; ;
229 }
230
231 func _(ch chan int) (z int) {
232 L: select {
233 case <-ch: return
234 default:
235 for i := 0; i < 10; i++ {
236 break L
237 }
238 return
239 }
240 ; ; ;
241 } /* ERROR "missing return" */
242
243 func parenPanic() int {
244 ((((((panic)))(0))))
245 }
246
247 func issue23218a() int {
248 {
249 panic := func(interface{}){}
250 panic(0)
251 }
252 } /* ERROR "missing return" */
253
254 func issue23218b() int {
255 {
256 panic := func(interface{}){}
257 ((((panic))))(0)
258 }
259 } /* ERROR "missing return" */
260
View as plain text