1*7704ba7fSYunzhong 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 1807c0f04eSSerge Pavlov // whitelisted 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 5007c0f04eSSerge Pavlov 5107c0f04eSSerge Pavlov #pragma clang diagnostic warning "-Wreserved-id-macro" 5207c0f04eSSerge Pavlov 5359da7b8aSSerge Pavlov #define switch if // expected-warning {{keyword is hidden by macro definition}} 5407c0f04eSSerge Pavlov #define final 1 5507c0f04eSSerge Pavlov #define __HAVE_X 0 // expected-warning {{macro name is a reserved identifier}} 5607c0f04eSSerge Pavlov #define _HAVE_X 0 // expected-warning {{macro name is a reserved identifier}} 5707c0f04eSSerge Pavlov #define X__Y // expected-warning {{macro name is a reserved identifier}} 5859da7b8aSSerge Pavlov 5907c0f04eSSerge Pavlov #undef __cplusplus // expected-warning {{macro name is a reserved identifier}} 6007c0f04eSSerge Pavlov #undef _HAVE_X // expected-warning {{macro name is a reserved identifier}} 6107c0f04eSSerge Pavlov #undef X__Y // expected-warning {{macro name is a reserved identifier}} 6259da7b8aSSerge Pavlov 6359da7b8aSSerge Pavlov int x; 64