| // 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); |
| } |