23 lines
		
	
	
		
			572 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			23 lines
		
	
	
		
			572 B
		
	
	
	
		
			C++
		
	
	
	
| // 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}}
 | |
| }
 |