blob: c2fa0a4df0df0e141ec020c5913f83eca0edec80 [file] [log] [blame]
Anders Carlssonabea9512011-02-28 00:40:07 +00001// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -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}
Richard Smith4b082422012-09-18 00:52:05 +000061
62int 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}