64 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 -fsyntax-only -verify -pedantic -std=c++98 %s
 | |
| 
 | |
| #define for 0    // expected-warning {{keyword is hidden by macro definition}}
 | |
| #define final 1
 | |
| #define __HAVE_X 0
 | |
| #define _HAVE_X 0
 | |
| #define X__Y
 | |
| 
 | |
| #undef for
 | |
| #undef final
 | |
| #undef __HAVE_X
 | |
| #undef _HAVE_X
 | |
| #undef X__Y
 | |
| 
 | |
| #undef __cplusplus
 | |
| #define __cplusplus
 | |
| 
 | |
| // whitelisted definitions
 | |
| #define while while
 | |
| #define const
 | |
| #define static
 | |
| #define extern
 | |
| #define inline
 | |
| 
 | |
| #undef while
 | |
| #undef const
 | |
| #undef static
 | |
| #undef extern
 | |
| #undef inline
 | |
| 
 | |
| #define inline __inline
 | |
| #undef  inline
 | |
| #define inline __inline__
 | |
| #undef  inline
 | |
| 
 | |
| #define inline inline__  // expected-warning {{keyword is hidden by macro definition}}
 | |
| #undef  inline
 | |
| #define extern __inline  // expected-warning {{keyword is hidden by macro definition}}
 | |
| #undef  extern
 | |
| #define extern __extern	 // expected-warning {{keyword is hidden by macro definition}}
 | |
| #undef  extern
 | |
| #define extern __extern__ // expected-warning {{keyword is hidden by macro definition}}
 | |
| #undef  extern
 | |
| 
 | |
| #define inline _inline   // expected-warning {{keyword is hidden by macro definition}}
 | |
| #undef  inline
 | |
| #define volatile   // expected-warning {{keyword is hidden by macro definition}}
 | |
| #undef  volatile
 | |
| 
 | |
| 
 | |
| #pragma clang diagnostic warning "-Wreserved-id-macro"
 | |
| 
 | |
| #define switch if  // expected-warning {{keyword is hidden by macro definition}}
 | |
| #define final 1
 | |
| #define __HAVE_X 0 // expected-warning {{macro name is a reserved identifier}}
 | |
| #define _HAVE_X 0  // expected-warning {{macro name is a reserved identifier}}
 | |
| #define X__Y       // expected-warning {{macro name is a reserved identifier}}
 | |
| 
 | |
| #undef __cplusplus // expected-warning {{macro name is a reserved identifier}}
 | |
| #undef _HAVE_X     // expected-warning {{macro name is a reserved identifier}}
 | |
| #undef X__Y        // expected-warning {{macro name is a reserved identifier}}
 | |
| 
 | |
| int x;
 |