2011-02-28 08:40:07 +08:00
|
|
|
// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -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");
|
|
|
|
}
|
2012-09-18 08:52:05 +08:00
|
|
|
|
|
|
|
int f6() {
|
|
|
|
int k, // expected-note {{change this ',' to a ';' to call 'f6'}}
|
|
|
|
f6(), // expected-error {{expected ';'}} expected-warning {{interpreted as a function declaration}} expected-note {{replace paren}}
|
|
|
|
int n = 0, // expected-error {{expected ';'}}
|
|
|
|
return f5(), // ok
|
|
|
|
int(n);
|
|
|
|
}
|