17704ba7fSYunzhong Gao // RUN: %clang_cc1 -fsyntax-only -verify -pedantic -std=c++98 %s 292c14bb2SNico Weber 359da7b8aSSerge Pavlov #define for 0 // expected-warning {{keyword is hidden by macro definition}} 407c0f04eSSerge Pavlov #define final 1 559da7b8aSSerge Pavlov #define __HAVE_X 0 659da7b8aSSerge Pavlov #define _HAVE_X 0 759da7b8aSSerge Pavlov #define X__Y 859da7b8aSSerge Pavlov 907c0f04eSSerge Pavlov #undef for 1007c0f04eSSerge Pavlov #undef final 1107c0f04eSSerge Pavlov #undef __HAVE_X 1259da7b8aSSerge Pavlov #undef _HAVE_X 1359da7b8aSSerge Pavlov #undef X__Y 1459da7b8aSSerge Pavlov 1507c0f04eSSerge Pavlov #undef __cplusplus 1607c0f04eSSerge Pavlov #define __cplusplus 1707c0f04eSSerge Pavlov 18*c379911aSZarko Todorovski // allowlisted definitions 1907c0f04eSSerge Pavlov #define while while 2007c0f04eSSerge Pavlov #define const 2107c0f04eSSerge Pavlov #define static 2207c0f04eSSerge Pavlov #define extern 2307c0f04eSSerge Pavlov #define inline 2407c0f04eSSerge Pavlov 2507c0f04eSSerge Pavlov #undef while 2607c0f04eSSerge Pavlov #undef const 2707c0f04eSSerge Pavlov #undef static 2807c0f04eSSerge Pavlov #undef extern 2907c0f04eSSerge Pavlov #undef inline 3007c0f04eSSerge Pavlov 3107c0f04eSSerge Pavlov #define inline __inline 3207c0f04eSSerge Pavlov #undef inline 3307c0f04eSSerge Pavlov #define inline __inline__ 3407c0f04eSSerge Pavlov #undef inline 3507c0f04eSSerge Pavlov 3607c0f04eSSerge Pavlov #define inline inline__ // expected-warning {{keyword is hidden by macro definition}} 3707c0f04eSSerge Pavlov #undef inline 3807c0f04eSSerge Pavlov #define extern __inline // expected-warning {{keyword is hidden by macro definition}} 3907c0f04eSSerge Pavlov #undef extern 4007c0f04eSSerge Pavlov #define extern __extern // expected-warning {{keyword is hidden by macro definition}} 4107c0f04eSSerge Pavlov #undef extern 4207c0f04eSSerge Pavlov #define extern __extern__ // expected-warning {{keyword is hidden by macro definition}} 4307c0f04eSSerge Pavlov #undef extern 4407c0f04eSSerge Pavlov 4507c0f04eSSerge Pavlov #define inline _inline // expected-warning {{keyword is hidden by macro definition}} 4607c0f04eSSerge Pavlov #undef inline 4707c0f04eSSerge Pavlov #define volatile // expected-warning {{keyword is hidden by macro definition}} 4807c0f04eSSerge Pavlov #undef volatile 4907c0f04eSSerge Pavlov 50b83b2327Sserge-sans-paille #pragma clang diagnostic warning "-Wreserved-macro-identifier" 5107c0f04eSSerge Pavlov 5259da7b8aSSerge Pavlov #define switch if // expected-warning {{keyword is hidden by macro definition}} 5307c0f04eSSerge Pavlov #define final 1 5407c0f04eSSerge Pavlov #define __HAVE_X 0 // expected-warning {{macro name is a reserved identifier}} 5507c0f04eSSerge Pavlov #define _HAVE_X 0 // expected-warning {{macro name is a reserved identifier}} 5607c0f04eSSerge Pavlov #define X__Y // expected-warning {{macro name is a reserved identifier}} 5759da7b8aSSerge Pavlov 5807c0f04eSSerge Pavlov #undef __cplusplus // expected-warning {{macro name is a reserved identifier}} 5907c0f04eSSerge Pavlov #undef _HAVE_X // expected-warning {{macro name is a reserved identifier}} 6007c0f04eSSerge Pavlov #undef X__Y // expected-warning {{macro name is a reserved identifier}} 6159da7b8aSSerge Pavlov 6259da7b8aSSerge Pavlov int x; 63