repo.or.cz
/
official-gcc.git
/
blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
log
|
graphiclog1
|
graphiclog2
|
commit
|
commitdiff
|
tree
|
refs
|
edit
|
fork
blame
|
history
|
raw
|
HEAD
d: Merge upstream dmd 568496d5b, druntime 178c44ff, phobos 574bf883b.
[official-gcc.git]
/
gcc
/
testsuite
/
gdc.test
/
compilable
/
test4375.d
blob
f5c4e4a9b40278a34ce5d31f8df73714e1b5618e
1
// REQUIRED_ARGS: -unittest
2
// https://issues.dlang.org/show_bug.cgi?id=4375
3
// disallow dangling else
4
5
void
main
() {
6
7
if
(
true
) {
8
if
(
false
) {
9
assert
(
1
);
10
}
else
{
11
assert
(
2
);
12
}
13
}
14
15
16
if
(
true
) {
17
if
(
false
)
18
assert
(
7
);
19
}
else
20
assert
(
8
);
21
22
23
if
(
true
) {
24
if
(
false
)
25
assert
(
9
);
26
else
27
assert
(
10
);
28
}
29
30
31
{
32
if
(
true
)
33
assert
(
11
);
34
else
35
assert
(
12
);
36
}
37
38
39
{
40
label1
:
41
if
(
true
)
42
assert
(
13
);
43
else
44
assert
(
14
);
45
}
46
47
48
if
(
true
)
49
foreach
(
i
;
0
..
5
) {
50
if
(
true
)
51
assert
(
17
);
52
else
53
assert
(
18
);
54
}
55
56
57
if
(
true
) {
58
foreach
(
i
;
0
..
5
)
59
if
(
true
)
60
assert
(
18.1
);
61
}
else
62
assert
(
18.2
);
63
64
65
if
(
true
)
66
assert
(
19
);
67
else
68
assert
(
20
);
69
70
71
if
(
true
)
72
assert
(
21
);
73
else if
(
false
)
74
assert
(
22
);
75
else
76
assert
(
23
);
77
78
79
version
(
A
) {
80
if
(
true
)
81
assert
(
26
);
82
}
else
83
assert
(
27
);
84
85
86
version
(
A
) {
87
if
(
true
)
88
assert
(
28
);
89
else
90
assert
(
29
);
91
}
92
93
94
version
(
A
)
95
assert
(
30
);
96
else version
(
B
)
97
assert
(
31
);
98
else
99
assert
(
32
);
100
101
102
static if
(
true
) {
103
static if
(
true
)
104
assert
(
35
);
105
}
else
106
assert
(
36
);
107
108
109
static if
(
true
) {
110
static if
(
true
)
111
assert
(
37
);
112
else
113
assert
(
38
);
114
}
115
116
117
static if
(
true
)
118
assert
(
39
);
119
else static if
(
true
)
120
assert
(
40
);
121
else
122
assert
(
41
);
123
124
switch
(
4
) {
125
case
0
:
126
if
(
true
)
127
assert
(
42
);
128
else
129
assert
(
43
);
130
break
;
131
case
1
: ..
case
5
:
132
if
(
true
)
133
assert
(
44
);
134
else
135
assert
(
45
);
136
break
;
137
default
:
138
if
(
true
)
139
assert
(
46
);
140
else
141
assert
(
47
);
142
break
;
143
}
144
145
// (o_O)
146
switch
(
1
)
147
default
:
148
if
(
true
)
149
assert
(
113
);
150
else
151
assert
(
114
);
152
153
// (o_O)
154
final switch
(
1
)
155
case
1
:
156
if
(
true
)
157
assert
(
117
);
158
else
159
assert
(
118
);
160
161
mixin
(
q
{
162
if
(
true
)
163
assert
(
56
);
164
else
165
assert
(
57
);
166
});
167
168
169
170
while
(
false
)
171
if
(
true
)
172
assert
(
66
);
173
else
174
assert
(
67
);
175
176
177
if
(
true
)
178
while
(
false
)
179
assert
(
68
);
180
else
181
assert
(
69
);
182
183
184
do
185
if
(
true
)
186
assert
(
72
);
187
else
188
assert
(
73
);
189
while
(
false
);
190
191
192
if
(
true
)
193
do
194
if
(
true
)
195
assert
(
74
);
196
else
197
assert
(
75
);
198
while
(
false
);
199
200
for
(
201
if
(
true
)
// (o_O)
202
assert
(
78
);
203
else
204
assert
(
79
);
205
false
;
false
206
)
207
if
(
true
)
208
assert
(
80
);
209
else
210
assert
(
81
);
211
212
if
(
true
)
213
for
(
if
(
true
)
assert
(
84
);
else assert
(
85
);
false
;)
214
assert
(
86
);
215
216
217
if
(
true
)
218
if
(
true
)
219
if
(
true
)
220
if
(
true
)
221
if
(
true
)
222
assert
(
87
);
223
224
auto
x
=
new
C
;
225
226
227
if
(
true
)
228
while
(
false
)
229
for
(;;)
230
scope
(
exit
)
231
synchronized
(
x
)
232
assert
(
88
);
233
else
234
assert
(
89
);
235
236
237
if
(
true
)
238
while
(
false
)
239
for
(;;) {
240
scope
(
exit
)
241
synchronized
(
x
)
242
if
(
true
)
243
assert
(
90
);
244
else
245
assert
(
89
);
246
}
247
248
249
if
(
true
)
250
while
(
false
)
251
for
(;;)
252
scope
(
exit
)
253
synchronized
(
x
)
254
if
(
true
)
255
assert
(
90
);
256
else
257
assert
(
89
);
258
else
259
assert
(
12
);
260
261
262
with
(
x
)
263
if
(
false
)
264
assert
(
92
);
265
else
266
assert
(
93
);
267
268
269
try
270
if
(
true
)
271
assert
(
94
);
272
else
273
assert
(
95
);
274
catch
(
Exception e
)
275
if
(
true
)
276
assert
(
96
);
277
else
278
assert
(
97
);
279
finally
280
if
(
true
)
281
assert
(
98
);
282
else
283
assert
(
99
);
284
285
286
if
(
true
)
287
try
288
if
(
true
)
289
assert
(
100
);
290
else
291
assert
(
101
);
292
finally
293
assert
(
102
);
294
295
if
(
true
)
296
try
297
assert
(
109
);
298
catch
(
Exception e
)
299
if
(
true
)
300
assert
(
110
);
301
else
302
assert
(
112
);
303
finally
304
assert
(
111
);
305
306
static struct
F
{
307
static if
(
true
)
308
int
x
;
309
else
310
int
y
;
311
312
static if
(
true
) {
313
static if
(
false
)
314
int
z
;
315
}
else
316
int
w
;
317
318
static if
(
true
)
319
int
t
;
320
else static if
(
false
)
321
int
u
;
322
else
323
int
v
;
324
}
325
326
if
(
true
)
327
if
(
true
)
328
assert
(
113
);
329
else
330
assert
(
114
);
331
else
332
assert
(
115
);
333
334
static if
(
true
)
335
static if
(
true
)
336
assert
(
116
);
337
else
338
assert
(
117
);
339
else
340
assert
(
118
);
341
342
}
343
344
unittest
{
345
if
(
true
)
346
assert
(
50
);
347
else
348
assert
(
51
);
349
}
350
351
class
C
{
352
invariant
() {
353
if
(
true
)
354
assert
(
58
);
355
else
356
assert
(
59
);
357
}
358
359
int
f
()
360
in
{
361
if
(
true
)
362
assert
(
60
);
363
else
364
assert
(
61
);
365
}
366
out
(
res
) {
367
if
(
true
)
368
assert
(
62
);
369
else
370
assert
(
63
);
371
}
372
do
{
373
if
(
true
)
374
assert
(
64
);
375
else
376
assert
(
65
);
377
return
0
;
378
}
379
}
380
381
enum
q
=
q
{
382
if
(
true
)
383
if
(
true
)
384
assert
(
54.1
);
385
else
386
assert
(
55.2
);
387
};
388
389
static if
(
true
)
390
struct
F0
{}
391
else static if
(
true
)
392
struct
F1
{}
393
else
394
struct
F2
{}
395
396
static if
(
true
) {
397
static if
(
false
)
398
struct
F3
{}
399
}
else
400
struct
F4
{}
401
402
version
(
A
) {
403
version
(
B
)
404
struct
F5
{}
405
}
else
406
struct
F6
{}
407
408
version
(
A
) {
409
version
(
B
)
410
struct
F5a
{}
411
else
412
struct
F5b
{}
413
}
414
415
version
(
C
)
416
struct
F5c
{}
417
else
418
struct
F5d
{}
419
420
struct
F7
{
421
static if
(
true
)
422
int
x
;
423
else
424
float
x
;
425
426
private
:
427
static if
(
true
)
428
int
y
;
429
else
430
float
y
;
431
}
432
433
template
F8
() {
434
static if
(
true
)
435
int
x
;
436
else
437
float
x
;
438
}
439
440
static if
(
true
)
441
align
(
1
)
442
static if
(
false
)
443
struct
F9
{}
444
445
static if
(
true
)
446
align
(
1
) {
447
extern
(
C
)
448
pure
449
static if
(
false
)
450
void
F10
(){}
451
else
452
void
F11
(){}
453
}
454
455
456
void
f
() {
457
int
[]
x
;
458
static if
(
5
>
0
)
459
version
(
Y
)
460
scope
(
failure
)
461
foreach
(
i
,
e
;
x
)
462
while
(
i
>
20
)
463
with
(
e
)
464
if
(
e
<
0
)
465
synchronized
(
e
)
466
assert
(
1
);
467
else
468
assert
(
2
);
469
else
470
x
=
null
;
471
else
472
x
=
null
;
473
}
474