forked from mirrors/gecko-dev
		
	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) {}
 | 
						|
}
 |