63 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -std=c++98 %s2 3#define for 0 // expected-warning {{keyword is hidden by macro definition}}4#define final 15#define __HAVE_X 06#define _HAVE_X 07#define X__Y8 9#undef for10#undef final11#undef __HAVE_X12#undef _HAVE_X13#undef X__Y14 15#undef __cplusplus // expected-warning {{undefining builtin macro}}16#define __cplusplus17 18// allowlisted definitions19#define while while20#define const21#define static22#define extern23#define inline24 25#undef while26#undef const27#undef static28#undef extern29#undef inline30 31#define inline __inline32#undef inline33#define inline __inline__34#undef inline35 36#define inline inline__ // expected-warning {{keyword is hidden by macro definition}}37#undef inline38#define extern __inline // expected-warning {{keyword is hidden by macro definition}}39#undef extern40#define extern __extern // expected-warning {{keyword is hidden by macro definition}}41#undef extern42#define extern __extern__ // expected-warning {{keyword is hidden by macro definition}}43#undef extern44 45#define inline _inline // expected-warning {{keyword is hidden by macro definition}}46#undef inline47#define volatile // expected-warning {{keyword is hidden by macro definition}}48#undef volatile49 50#pragma clang diagnostic warning "-Wreserved-macro-identifier"51 52#define switch if // expected-warning {{keyword is hidden by macro definition}}53#define final 154#define __HAVE_X 0 // expected-warning {{macro name is a reserved identifier}}55#define _HAVE_X 0 // expected-warning {{macro name is a reserved identifier}}56#define X__Y // expected-warning {{macro name is a reserved identifier}}57 58#undef __cplusplus // expected-warning {{macro name is a reserved identifier}}59#undef _HAVE_X // expected-warning {{macro name is a reserved identifier}}60#undef X__Y // expected-warning {{macro name is a reserved identifier}}61 62int x;63