mirror of
				https://github.com/mozilla/gecko-dev.git
				synced 2025-10-31 16:28:05 +02:00 
			
		
		
		
	 2139aad55e
			
		
	
	
		2139aad55e
		
	
	
	
	
		
			
			Differential Revision: https://phabricator.services.mozilla.com/D7997 --HG-- extra : moz-landing-system : lando
		
			
				
	
	
		
			55 lines
		
	
	
	
		
			951 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			951 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
 | |
| #define MOZ_IMPLICIT __attribute__((annotate("moz_implicit")))
 | |
| 
 | |
| void takesChar(char);
 | |
| void takesShort(short);
 | |
| void takesInt(int);
 | |
| void takesLong(long);
 | |
| 
 | |
| void takesUChar(unsigned char);
 | |
| void takesUShort(unsigned short);
 | |
| void takesUInt(unsigned int);
 | |
| void takesULong(unsigned long);
 | |
| 
 | |
| struct InitializedWithInt {
 | |
|   MOZ_IMPLICIT InitializedWithInt(int);
 | |
| };
 | |
| 
 | |
| void f() {
 | |
|   bool b = true;
 | |
|   char s0 = b;
 | |
|   short s1 = b;
 | |
|   int s2 = b;
 | |
|   long s3 = b;
 | |
| 
 | |
|   unsigned char u0 = b;
 | |
|   unsigned short u1 = b;
 | |
|   unsigned u2 = b;
 | |
|   unsigned long u3 = b;
 | |
| 
 | |
|   takesChar(b);
 | |
|   takesShort(b);
 | |
|   takesInt(b);
 | |
|   takesLong(b);
 | |
|   takesUChar(b);
 | |
|   takesUShort(b);
 | |
|   takesUInt(b);
 | |
|   takesULong(b);
 | |
| 
 | |
|   InitializedWithInt i = b;
 | |
|   (InitializedWithInt(b));
 | |
| 
 | |
|   bool x = b;
 | |
| 
 | |
|   int exp = (int)true;
 | |
| 
 | |
|   if (x == b) {}
 | |
|   if (x != b) {}
 | |
| 
 | |
|   if (b == exp) {}
 | |
|   if (exp == b) {}
 | |
| 
 | |
|   char* ptr;
 | |
|   // Shouldn't trigger a checker warning since we are using AllowPointerConditions
 | |
|   if (ptr) {}
 | |
| }
 |