69 lines
1.2 KiB
C++
69 lines
1.2 KiB
C++
// RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify %s
|
|
|
|
void f1()
|
|
{
|
|
try {
|
|
;
|
|
} catch(int i) {
|
|
;
|
|
} catch(...) {
|
|
}
|
|
}
|
|
|
|
void f2()
|
|
{
|
|
try; // expected-error {{expected '{'}}
|
|
|
|
try {}
|
|
catch; // expected-error {{expected '('}}
|
|
|
|
try {}
|
|
catch (...); // expected-error {{expected '{'}}
|
|
|
|
try {}
|
|
catch {} // expected-error {{expected '('}}
|
|
}
|
|
|
|
void f3() try {
|
|
} catch(...) {
|
|
}
|
|
|
|
struct A {
|
|
int i;
|
|
A(int);
|
|
A(char);
|
|
A() try : i(0) {} catch(...) {}
|
|
void f() try {} catch(...) {}
|
|
A(float) : i(0) try {} // expected-error {{expected '{' or ','}}
|
|
};
|
|
|
|
A::A(char) : i(0) try {} // expected-error {{expected '{' or ','}}
|
|
A::A(int j) try : i(j) {} catch(...) {}
|
|
|
|
|
|
|
|
// PR5740
|
|
struct Type { };
|
|
|
|
enum { Type } Kind;
|
|
void f4() {
|
|
int i = 0;
|
|
switch (Kind) {
|
|
case Type: i = 7; break; // no error.
|
|
}
|
|
}
|
|
|
|
// PR5500
|
|
void f5() {
|
|
asm volatile ("":: :"memory");
|
|
asm volatile ("": ::"memory");
|
|
}
|
|
|
|
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);
|
|
}
|