1 | // RUN: %clang_cc1 -fsyntax-only -verify %s |
2 | |
3 | @interface A |
4 | @end |
5 | @interface B |
6 | @end |
7 | |
8 | void f0(int cond, A *a, B *b) { |
9 | // Ensure that we can still send a message to result of incompatible |
10 | // conditional expression. |
11 | [ (cond ? a : b) test ]; // expected-warning{{incompatible operand types ('A *' and 'B *')}} expected-warning {{method '-test' not found}} |
12 | } |
13 | |
14 | @interface NSKey @end |
15 | @interface KeySub : NSKey @end |
16 | |
17 | @interface UpdatesList @end |
18 | |
19 | void foo (int i, NSKey *NSKeyValueCoding_NullValue, UpdatesList *nukedUpdatesList) |
20 | { |
21 | id obj; |
22 | NSKey *key; |
23 | KeySub *keysub; |
24 | |
25 | obj = i ? NSKeyValueCoding_NullValue : nukedUpdatesList; // expected-warning{{incompatible operand types ('NSKey *' and 'UpdatesList *')}} |
26 | key = i ? NSKeyValueCoding_NullValue : nukedUpdatesList; // expected-warning{{incompatible operand types ('NSKey *' and 'UpdatesList *')}} |
27 | key = i ? NSKeyValueCoding_NullValue : keysub; |
28 | keysub = i ? NSKeyValueCoding_NullValue : keysub; // expected-warning{{incompatible pointer types assigning to 'KeySub *' from 'NSKey *'}} |
29 | } |
30 | |