blob: fdd573e6bfa5de2769935f697a7bf5655a7e0057 [file] [log] [blame]
Daniel Dunbara5728872009-12-15 20:14:24 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
Sebastian Redla0fd8652008-12-21 16:41:36 +00002
Chris Lattner6fb09c82009-12-10 00:38:54 +00003void f1()
Sebastian Redla0fd8652008-12-21 16:41:36 +00004{
5 try {
6 ;
7 } catch(int i) {
8 ;
9 } catch(...) {
10 }
11}
12
Chris Lattner6fb09c82009-12-10 00:38:54 +000013void f2()
Sebastian Redla0fd8652008-12-21 16:41:36 +000014{
15 try; // expected-error {{expected '{'}}
16
17 try {}
18 catch; // expected-error {{expected '('}}
19
20 try {}
21 catch (...); // expected-error {{expected '{'}}
22
23 try {}
24 catch {} // expected-error {{expected '('}}
25}
Sebastian Redld3a413d2009-04-26 20:35:05 +000026
Chris Lattner6fb09c82009-12-10 00:38:54 +000027void f3() try {
Sebastian Redld3a413d2009-04-26 20:35:05 +000028} catch(...) {
29}
30
31struct A {
32 int i;
Sebastian Redld3a413d2009-04-26 20:35:05 +000033 A(int);
34 A(char);
Sebastian Redld3a413d2009-04-26 20:35:05 +000035 A() try : i(0) {} catch(...) {}
36 void f() try {} catch(...) {}
Sebastian Redlde1b60a2009-04-26 21:08:36 +000037 A(float) : i(0) try {} // expected-error {{expected '{' or ','}}
Sebastian Redld3a413d2009-04-26 20:35:05 +000038};
39
40A::A(char) : i(0) try {} // expected-error {{expected '{' or ','}}
41A::A(int j) try : i(j) {} catch(...) {}
Chris Lattner6fb09c82009-12-10 00:38:54 +000042
43
44
45// PR5740
46struct Type { };
47
48enum { Type } Kind;
49void f4() {
50 int i = 0;
51 switch (Kind) {
52 case Type: i = 7; break; // no error.
53 }
Daniel Dunbara5728872009-12-15 20:14:24 +000054}
Chris Lattner64056462009-12-20 23:08:04 +000055
56// PR5500
57void f5() {
58 asm volatile ("":: :"memory");
59 asm volatile ("": ::"memory");
60}