1*67e74705SXin Li // RUN: %clang_cc1 %s -Eonly -verify 2*67e74705SXin Li 3*67e74705SXin Li // This should not be rejected. 4*67e74705SXin Li #ifdef defined 5*67e74705SXin Li #endif 6*67e74705SXin Li 7*67e74705SXin Li 8*67e74705SXin Li 9*67e74705SXin Li // PR3764 10*67e74705SXin Li 11*67e74705SXin Li // This should not produce a redefinition warning. 12*67e74705SXin Li #define FUNC_LIKE(a) (a) 13*67e74705SXin Li #define FUNC_LIKE(a)(a) 14*67e74705SXin Li 15*67e74705SXin Li // This either. 16*67e74705SXin Li #define FUNC_LIKE2(a)\ 17*67e74705SXin Li (a) 18*67e74705SXin Li #define FUNC_LIKE2(a) (a) 19*67e74705SXin Li 20*67e74705SXin Li // This should. 21*67e74705SXin Li #define FUNC_LIKE3(a) ( a) // expected-note {{previous definition is here}} 22*67e74705SXin Li #define FUNC_LIKE3(a) (a) // expected-warning {{'FUNC_LIKE3' macro redefined}} 23*67e74705SXin Li 24*67e74705SXin Li // RUN: %clang_cc1 -fms-extensions -DMS_EXT %s -Eonly -verify 25*67e74705SXin Li #ifndef MS_EXT 26*67e74705SXin Li // This should under C99. 27*67e74705SXin Li #define FUNC_LIKE4(a,b) (a+b) // expected-note {{previous definition is here}} 28*67e74705SXin Li #define FUNC_LIKE4(x,y) (x+y) // expected-warning {{'FUNC_LIKE4' macro redefined}} 29*67e74705SXin Li #else 30*67e74705SXin Li // This shouldn't under MS extensions. 31*67e74705SXin Li #define FUNC_LIKE4(a,b) (a+b) 32*67e74705SXin Li #define FUNC_LIKE4(x,y) (x+y) 33*67e74705SXin Li 34*67e74705SXin Li // This should. 35*67e74705SXin Li #define FUNC_LIKE5(a,b) (a+b) // expected-note {{previous definition is here}} 36*67e74705SXin Li #define FUNC_LIKE5(x,y) (y+x) // expected-warning {{'FUNC_LIKE5' macro redefined}} 37*67e74705SXin Li #endif 38