| // RUN: %clang_cc1 -std=c++11 -fdebugger-support -fdebugger-cast-result-to-id -funknown-anytype -fsyntax-only -verify %s |
| |
| extern __unknown_anytype test0a; |
| extern __unknown_anytype test1a(); |
| extern __unknown_anytype test0b; |
| extern __unknown_anytype test1b(); |
| extern __unknown_anytype test0c; |
| extern __unknown_anytype test1c(); |
| extern __unknown_anytype test0d; |
| extern __unknown_anytype test1d(); |
| extern __unknown_anytype test0d; |
| extern __unknown_anytype test1d(); |
| |
| @interface A |
| @end |
| |
| // rdar://problem/9416370 |
| namespace rdar9416370 { |
| void test(id x) { |
| if ([x foo]) {} // expected-error {{no known method '-foo'; cast the message send to the method's return type}} |
| [x foo]; |
| } |
| } |
| |
| // rdar://10988847 |
| @class NSString; // expected-note {{forward declaration of class here}} |
| namespace rdar10988847 { |
| void test() { |
| id s = [NSString stringWithUTF8String:"foo"]; // expected-warning {{receiver 'NSString' is a forward class and corresponding @interface may not exist}} |
| } |
| } |
| |
| // rdar://13338107 |
| namespace rdar13338107 { |
| void test() { |
| id x1 = test0a; |
| id x2 = test1a(); |
| A *x3 = test0b; |
| A *x4 = test1b(); |
| auto x5 = test0c; |
| auto x6 = test1c(); |
| } |
| } |