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