2009-12-16 04:14:24 +08:00
|
|
|
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
2008-12-22 00:41:36 +08:00
|
|
|
|
2009-12-10 08:38:54 +08:00
|
|
|
void f1()
|
2008-12-22 00:41:36 +08:00
|
|
|
{
|
|
|
|
try {
|
|
|
|
;
|
|
|
|
} catch(int i) {
|
|
|
|
;
|
|
|
|
} catch(...) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2009-12-10 08:38:54 +08:00
|
|
|
void f2()
|
2008-12-22 00:41:36 +08:00
|
|
|
{
|
|
|
|
try; // expected-error {{expected '{'}}
|
|
|
|
|
|
|
|
try {}
|
|
|
|
catch; // expected-error {{expected '('}}
|
|
|
|
|
|
|
|
try {}
|
|
|
|
catch (...); // expected-error {{expected '{'}}
|
|
|
|
|
|
|
|
try {}
|
|
|
|
catch {} // expected-error {{expected '('}}
|
|
|
|
}
|
2009-04-27 04:35:05 +08:00
|
|
|
|
2009-12-10 08:38:54 +08:00
|
|
|
void f3() try {
|
2009-04-27 04:35:05 +08:00
|
|
|
} catch(...) {
|
|
|
|
}
|
|
|
|
|
|
|
|
struct A {
|
|
|
|
int i;
|
|
|
|
A(int);
|
|
|
|
A(char);
|
|
|
|
A() try : i(0) {} catch(...) {}
|
|
|
|
void f() try {} catch(...) {}
|
2009-04-27 05:08:36 +08:00
|
|
|
A(float) : i(0) try {} // expected-error {{expected '{' or ','}}
|
2009-04-27 04:35:05 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
A::A(char) : i(0) try {} // expected-error {{expected '{' or ','}}
|
|
|
|
A::A(int j) try : i(j) {} catch(...) {}
|
2009-12-10 08:38:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// PR5740
|
|
|
|
struct Type { };
|
|
|
|
|
|
|
|
enum { Type } Kind;
|
|
|
|
void f4() {
|
|
|
|
int i = 0;
|
|
|
|
switch (Kind) {
|
|
|
|
case Type: i = 7; break; // no error.
|
|
|
|
}
|
2009-12-16 04:14:24 +08:00
|
|
|
}
|
2009-12-21 07:08:04 +08:00
|
|
|
|
|
|
|
// PR5500
|
|
|
|
void f5() {
|
|
|
|
asm volatile ("":: :"memory");
|
|
|
|
asm volatile ("": ::"memory");
|
|
|
|
}
|