Home | History | Annotate | Download | only in SemaObjC
      1 // silly workaround expected-note {{marked unavailable here}}
      2 // RUN: %clang_cc1 -fobjc-arc -isystem %S/Inputs %s -DNO_USE
      3 // RUN: %clang_cc1 -fobjc-arc -isystem %S/Inputs %s -verify
      4 
      5 // another silly workaround expected-note {{marked unavailable here}}
      6 #include <arc-system-header.h>
      7 
      8 #ifndef NO_USE
      9 void test(id op, void *cp) {
     10   cp = test0(op); // expected-error {{'test0' is unavailable: converts between Objective-C and C pointers in -fobjc-arc}}
     11   cp = *test1(&op); // expected-error {{'test1' is unavailable: converts between Objective-C and C pointers in -fobjc-arc}}
     12 }
     13 
     14 // workaround expected-note {{marked unavailable here}}
     15 void test3(struct Test3 *p) {
     16   p->field = 0; // expected-error {{'field' is unavailable: this system declaration uses an unsupported type}}
     17 }
     18 
     19 // workaround expected-note {{marked unavailable here}}
     20 void test4(Test4 *p) {
     21   p->field1 = 0; // expected-error {{'field1' is unavailable: this system declaration uses an unsupported type}}
     22   p->field2 = 0;
     23 }
     24 
     25 // workaround expected-note {{marked unavailable here}}
     26 void test5(struct Test5 *p) {
     27   p->field = 0; // expected-error {{'field' is unavailable: this system field has retaining ownership}}
     28 }
     29 
     30 id test6() {
     31   // This is actually okay to use if declared in a system header.
     32   id x;
     33   x = (id) kMagicConstant;
     34   x = (id) (x ? kMagicConstant : kMagicConstant);
     35   x = (id) (x ? kMagicConstant : (void*) 0);
     36 
     37   extern void test6_helper();
     38   x = (id) (test6_helper(), kMagicConstant);
     39 }
     40 
     41 // workaround expected-note 4 {{marked unavailable here}}
     42 void test7(Test7 *p) {
     43   *p.prop = 0; // expected-error {{'prop' is unavailable: this system declaration uses an unsupported type}}
     44   p.prop = 0; // expected-error {{'prop' is unavailable: this system declaration uses an unsupported type}}
     45   *[p prop] = 0; // expected-error {{'prop' is unavailable: this system declaration uses an unsupported type}}
     46   [p setProp: 0]; // expected-error {{'setProp:' is unavailable: this system declaration uses an unsupported type}}
     47 }
     48 #endif
     49 
     50 // test8 in header
     51