// RUN: %clang_cc1 -Werror=objc-signed-char-bool %s -fixit-recompile -fixit-to-temporary -E -o - | FileCheck %s

typedef signed char BOOL;

BOOL b;

int main() {
  BOOL b = 2;
  // CHECK: BOOL b = 2 ? YES : NO;

  b = b ? 2 : 1;
  // CHECK: b = b ? 2 ? YES : NO : 1;

  b = b ? 1 : 2;
  // CHECK: b = b ? 1 : 2 ? YES : NO;

  b = b ? 2 : 2;
  // CHECK: b = b ? 2 ? YES : NO : 2 ? YES : NO;

  b = 1 + 1;
  // CHECK: b = (1 + 1) ? YES : NO;

  b = 1 | 2;
  // CHECK: b = (1 | 2) ? YES : NO;

  b = 1 << 1;
  // CHECK: b = (1 << 1) ? YES : NO;

  int i;

  b = i;
  // CHECK: b = i ? YES : NO;

  b = i * 2;
  // CHECK b = (i * 2) ? YES : NO;

  b = 1 ? 2 : 3;
  // CHECK: b = 1 ? 2 ? YES : NO : 3 ? YES : NO;
}

@interface BoolProp
@property BOOL b;
@end

void f(BoolProp *bp) {
  bp.b = 43;
  // CHECK: bp.b = 43 ? YES : NO;

  [bp setB:43];
  // CHECK: [bp setB:43 ? YES : NO];

  int i;

  bp.b = i;
  // CHECK: bp.b = i ? YES : NO;

  bp.b = i + 1;
  // CHECK: bp.b = (i + 1) ? YES : NO;
}
