1*67e74705SXin Li // RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify %s 2*67e74705SXin Li f1()3*67e74705SXin Livoid f1() 4*67e74705SXin Li { 5*67e74705SXin Li try { 6*67e74705SXin Li ; 7*67e74705SXin Li } catch(int i) { 8*67e74705SXin Li ; 9*67e74705SXin Li } catch(...) { 10*67e74705SXin Li } 11*67e74705SXin Li } 12*67e74705SXin Li f2()13*67e74705SXin Livoid f2() 14*67e74705SXin Li { 15*67e74705SXin Li try; // expected-error {{expected '{'}} 16*67e74705SXin Li 17*67e74705SXin Li try {} 18*67e74705SXin Li catch; // expected-error {{expected '('}} 19*67e74705SXin Li 20*67e74705SXin Li try {} 21*67e74705SXin Li catch (...); // expected-error {{expected '{'}} 22*67e74705SXin Li 23*67e74705SXin Li try {} 24*67e74705SXin Li catch {} // expected-error {{expected '('}} 25*67e74705SXin Li } 26*67e74705SXin Li 27*67e74705SXin Li void f3() try { 28*67e74705SXin Li } catch(...) { 29*67e74705SXin Li } 30*67e74705SXin Li 31*67e74705SXin Li struct A { 32*67e74705SXin Li int i; 33*67e74705SXin Li A(int); 34*67e74705SXin Li A(char); 35*67e74705SXin Li A() try : i(0) {} catch(...) {} 36*67e74705SXin Li void f() try {} catch(...) {} 37*67e74705SXin Li A(float) : i(0) try {} // expected-error {{expected '{' or ','}} 38*67e74705SXin Li }; 39*67e74705SXin Li 40*67e74705SXin Li A::A(char) : i(0) try {} // expected-error {{expected '{' or ','}} 41*67e74705SXin Li A::A(int j) try : i(j) {} catch(...) {} 42*67e74705SXin Li 43*67e74705SXin Li 44*67e74705SXin Li 45*67e74705SXin Li // PR5740 46*67e74705SXin Li struct Type { }; 47*67e74705SXin Li 48*67e74705SXin Li enum { Type } Kind; 49*67e74705SXin Li void f4() { 50*67e74705SXin Li int i = 0; 51*67e74705SXin Li switch (Kind) { 52*67e74705SXin Li case Type: i = 7; break; // no error. 53*67e74705SXin Li } 54*67e74705SXin Li } 55*67e74705SXin Li 56*67e74705SXin Li // PR5500 57*67e74705SXin Li void f5() { 58*67e74705SXin Li asm volatile ("":: :"memory"); 59*67e74705SXin Li asm volatile ("": ::"memory"); 60*67e74705SXin Li } 61*67e74705SXin Li 62*67e74705SXin Li int f6() { 63*67e74705SXin Li int k, // expected-note {{change this ',' to a ';' to call 'f6'}} 64*67e74705SXin Li f6(), // expected-error {{expected ';'}} expected-warning {{interpreted as a function declaration}} expected-note {{replace paren}} 65*67e74705SXin Li int n = 0, // expected-error {{expected ';'}} 66*67e74705SXin Li return f5(), // ok 67*67e74705SXin Li int(n); 68*67e74705SXin Li } 69