// RUN: clang-cc -fsyntax-only -verify %s

@interface A
@end
@interface B
@end

void f0(int cond, A *a, B *b) {
  // Ensure that we can still send a message to result of incompatible
  // conditional expression.
  [ (cond ? a : b) test ]; // expected-warning{{incompatible operand types ('A *' and 'B *')}} expected-warning {{method '-test' not found}}
}

@interface NSKey @end
@interface KeySub : NSKey @end

@interface UpdatesList @end

void foo (int i, NSKey *NSKeyValueCoding_NullValue, UpdatesList *nukedUpdatesList)
{
  id obj;
  NSKey *key;
  KeySub *keysub;

  obj = i ? NSKeyValueCoding_NullValue : nukedUpdatesList; // expected-warning{{incompatible operand types ('NSKey *' and 'UpdatesList *')}}
  key = i ? NSKeyValueCoding_NullValue : nukedUpdatesList; // expected-warning{{incompatible operand types ('NSKey *' and 'UpdatesList *')}}
  key = i ? NSKeyValueCoding_NullValue : keysub;
  keysub = i ? NSKeyValueCoding_NullValue : keysub; // expected-warning{{incompatible pointer types assigning 'NSKey *', expected 'KeySub *'}}
}
