// RUN: %clang_cc1 %s -verify -Wconversion #define P(X) _Pragma(#X) #define V(X) X #define X \ P(clang diagnostic push) \ P(clang diagnostic ignored "-Wconversion") \ ) = 1.2; \ P(clang diagnostic pop) void f() { int a = 1.2; // expected-warning {{changes value}} // Note, we intentionally enter a tentatively-parsed context here to trigger // regular use of lookahead. This would go wrong if _Pragma checking in macro // argument pre-expansion also tries to use token lookahead. int (b V(X) int c = 1.2; // expected-warning {{changes value}} }