1 // RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify %s
2
f1()3 void f1()
4 {
5 try {
6 ;
7 } catch(int i) {
8 ;
9 } catch(...) {
10 }
11 }
12
f2()13 void f2()
14 {
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 }
26
27 void f3() try {
28 } catch(...) {
29 }
30
31 struct A {
32 int i;
33 A(int);
34 A(char);
35 A() try : i(0) {} catch(...) {}
36 void f() try {} catch(...) {}
37 A(float) : i(0) try {} // expected-error {{expected '{' or ','}}
38 };
39
40 A::A(char) : i(0) try {} // expected-error {{expected '{' or ','}}
41 A::A(int j) try : i(j) {} catch(...) {}
42
43
44
45 // PR5740
46 struct Type { };
47
48 enum { Type } Kind;
49 void f4() {
50 int i = 0;
51 switch (Kind) {
52 case Type: i = 7; break; // no error.
53 }
54 }
55
56 // PR5500
57 void f5() {
58 asm volatile ("":: :"memory");
59 asm volatile ("": ::"memory");
60 }
61
62 int f6() {
63 int k, // expected-note {{change this ',' to a ';' to call 'f6'}}
64 f6(), // expected-error {{expected ';'}} expected-warning {{interpreted as a function declaration}} expected-note {{replace paren}}
65 int n = 0, // expected-error {{expected ';'}}
66 return f5(), // ok
67 int(n);
68 }
69