| // RUN: %clang_cc1 -fsyntax-only -verify %s |
| // rdar://8191774 |
| |
| @protocol SomeProtocol |
| @end |
| |
| @protocol SomeProtocol1 |
| @end |
| |
| @interface SomeObject <SomeProtocol> |
| @end |
| |
| int main () { |
| Class <SomeProtocol> classA; |
| Class <SomeProtocol> classB; |
| Class <SomeProtocol, SomeProtocol1> classC; |
| Class <SomeProtocol1> classD; |
| void * pv = 0; |
| Class c = (Class)0;; |
| if (pv) |
| return classA == pv; |
| |
| if (c) |
| return classA == c; |
| |
| return classA == classB || classA == classC || |
| classC == classA || |
| classA == classD; // expected-warning {{comparison of distinct pointer types ('Class<SomeProtocol> *' and 'Class<SomeProtocol1> *')}} |
| } |
| |