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

@protocol P0
@end
@protocol P1
@end
@protocol P2
@end

@interface A <P0>
@end

@interface B : A
@end

void bar(id x);
void barP0(id<P0> x);
void barP1(id<P1> x);
void barP2(id<P2> x);

void f0(A *a) {
  id l = a;
}

void f1(id x, A *a) {
  id<P0> l = a;
}

void f2(id<P1> x) {
  id<P0> l = x; // expected-warning {{incompatible type initializing 'id<P1>', expected 'id<P0>'}}
}

void f3(A *a) {
  id<P1> l = a; // expected-warning {{incompatible type initializing 'A *', expected 'id<P1>'}}
}

void f4(int cond, id x, A *a) {
  bar(cond ? x : a);
}

void f5(int cond, A *a, B *b) {
  bar(cond ? a : b);
}

void f6(int cond, id x, A *a) {
  bar(cond ? (id<P0, P1>) x : a);
}

void f7(int cond, id x, A *a) {
  bar(cond ? a : (id<P0, P1>) x);
}

void f8(int cond, id<P0,P1> x0, id<P0,P2> x1) {
  barP0(cond ? x0 : x1); // expected-warning {{incompatible operand types ('id<P0,P1>' and 'id<P0,P2>')}}
}

void f9(int cond, id<P0,P1> x0, id<P0,P2> x1) {
  barP1(cond ? x0 : x1); // expected-warning {{incompatible operand types ('id<P0,P1>' and 'id<P0,P2>')}}
}

void f10(int cond, id<P0,P1> x0, id<P0,P2> x1) {
  barP2(cond ? x0 : x1); // expected-warning {{incompatible operand types ('id<P0,P1>' and 'id<P0,P2>')}}
}

int f11(int cond, A* a, B* b) {
  return (cond? b : a)->x; // expected-error{{'A' does not have a member named 'x'}}
}
