1 | // RUN: %clang_cc1 -std=c++11 -fdebugger-support -fdebugger-cast-result-to-id -funknown-anytype -fsyntax-only -verify %s |
2 | |
3 | extern __unknown_anytype test0a; |
4 | extern __unknown_anytype test1a(); |
5 | extern __unknown_anytype test0b; |
6 | extern __unknown_anytype test1b(); |
7 | extern __unknown_anytype test0c; |
8 | extern __unknown_anytype test1c(); |
9 | extern __unknown_anytype test0d; |
10 | extern __unknown_anytype test1d(); |
11 | extern __unknown_anytype test0d; |
12 | extern __unknown_anytype test1d(); |
13 | |
14 | @interface A |
15 | @end |
16 | |
17 | // rdar://problem/9416370 |
18 | namespace rdar9416370 { |
19 | void test(id x) { |
20 | if ([x foo]) {} // expected-error {{no known method '-foo'; cast the message send to the method's return type}} |
21 | [x foo]; |
22 | } |
23 | } |
24 | |
25 | // rdar://10988847 |
26 | @class NSString; // expected-note {{forward declaration of class here}} |
27 | namespace rdar10988847 { |
28 | void test() { |
29 | id s = [NSString stringWithUTF8String:"foo"]; // expected-warning {{receiver 'NSString' is a forward class and corresponding @interface may not exist}} |
30 | } |
31 | } |
32 | |
33 | // rdar://13338107 |
34 | namespace rdar13338107 { |
35 | void test() { |
36 | id x1 = test0a; |
37 | id x2 = test1a(); |
38 | A *x3 = test0b; |
39 | A *x4 = test1b(); |
40 | auto x5 = test0c; |
41 | auto x6 = test1c(); |
42 | } |
43 | } |
44 | |