Home | History | Annotate | Download | only in ARCMT
      1 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
      2 // RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
      3 // RUN: diff %t %s.result
      4 
      5 #include "Common.h"
      6 
      7 @interface A : NSObject {
      8 @package
      9     id object;
     10 }
     11 @end
     12 
     13 @interface B : NSObject {
     14   id _prop;
     15   xpc_object_t _xpc_prop;
     16 }
     17 - (BOOL)containsSelf:(A*)a;
     18 @property (strong) id prop;
     19 @property (strong) xpc_object_t xpc_prop;
     20 @end
     21 
     22 @implementation A
     23 @end
     24 
     25 @implementation B
     26 - (BOOL)containsSelf:(A*)a {
     27     return a->object == self;
     28 }
     29 
     30 -(id) prop {
     31   return _prop;
     32 }
     33 -(void) setProp:(id) newVal {
     34   _prop = newVal;
     35 }
     36 -(void) setProp2:(CFTypeRef) newVal {
     37   _prop = (id)CFBridgingRelease(CFRetain(newVal));
     38 }
     39 
     40 -(id) xpc_prop {
     41   return _xpc_prop;
     42 }
     43 -(void) setXpc_prop:(xpc_object_t) newVal {
     44   _xpc_prop = newVal;
     45 }
     46 @end
     47 
     48 void NSLog(id, ...);
     49 
     50 int main (int argc, const char * argv[]) {
     51     @autoreleasepool {
     52         A *a = [A new];
     53         B *b = [B new];
     54         NSLog(@"%s", [b containsSelf:a] ? "YES" : "NO");
     55     }
     56     return 0;
     57 }
     58 
     59 void test(A *prevVal, A *newVal) {
     60   prevVal = newVal;
     61 }
     62 
     63 id test2(A* val) {
     64   return val;
     65 }
     66 
     67 id test3() {
     68   id a = [[A alloc] init];
     69 }
     70