// 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(); } }