Home | History | Annotate | Download | only in SemaObjCXX
      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