Home | History | Annotate | Download | only in ARCMT
      1 // RUN: rm -rf %t
      2 // RUN: %clang_cc1 -objcmt-migrate-all -mt-migrate-directory %t %s -x objective-c -fobjc-runtime-has-weak -fobjc-arc -triple x86_64-apple-darwin11
      3 // RUN: c-arcmt-test -mt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
      4 // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c -fobjc-runtime-has-weak -fobjc-arc %s.result
      5 // rdar://15396636
      6 
      7 #ifndef NS_RETURNS_INNER_POINTER // defined in iOS 6 for sure
      8 #define NS_RETURNS_INNER_POINTER __attribute__((objc_returns_inner_pointer))
      9 #endif
     10 
     11 #define CF_IMPLICIT_BRIDGING_ENABLED _Pragma("clang arc_cf_code_audited begin")
     12 
     13 #define CF_IMPLICIT_BRIDGING_DISABLED _Pragma("clang arc_cf_code_audited end")
     14 
     15 #if __has_feature(attribute_ns_returns_retained)
     16 #define NS_RETURNS_RETAINED __attribute__((ns_returns_retained))
     17 #endif
     18 #if __has_feature(attribute_cf_returns_retained)
     19 #define CF_RETURNS_RETAINED __attribute__((cf_returns_retained))
     20 #endif
     21 #if __has_feature(attribute_ns_returns_not_retained)
     22 #define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained))
     23 #endif
     24 #if __has_feature(attribute_cf_returns_not_retained)
     25 #define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained))
     26 #endif
     27 #if __has_feature(attribute_ns_consumes_self)
     28 #define NS_CONSUMES_SELF __attribute__((ns_consumes_self))
     29 #endif
     30 #if __has_feature(attribute_ns_consumed)
     31 #define NS_CONSUMED __attribute__((ns_consumed))
     32 #endif
     33 #if __has_feature(attribute_cf_consumed)
     34 #define CF_CONSUMED __attribute__((cf_consumed))
     35 #endif
     36 #if __has_attribute(ns_returns_autoreleased)
     37 #define NS_RETURNS_AUTORELEASED __attribute__((ns_returns_autoreleased))
     38 #endif
     39 
     40 #define NS_AVAILABLE __attribute__((availability(macosx,introduced=10.0)))
     41 
     42 CF_IMPLICIT_BRIDGING_ENABLED
     43 
     44 typedef unsigned long CFTypeID;
     45 typedef unsigned long CFOptionFlags;
     46 typedef unsigned long CFHashCode;
     47 
     48 typedef signed long CFIndex; /*AnyObj*/
     49 typedef const struct __CFArray * CFArrayRef;
     50 typedef struct {
     51     CFIndex location;
     52     CFIndex length;
     53 } CFRange;
     54 
     55 typedef void (*CFArrayApplierFunction)(const void *value, void *context);
     56 
     57 typedef enum CFComparisonResult : CFIndex CFComparisonResult; enum CFComparisonResult : CFIndex {
     58     kCFCompareLessThan = -1L,
     59     kCFCompareEqualTo = 0,
     60     kCFCompareGreaterThan = 1
     61 };
     62 
     63 
     64 typedef CFComparisonResult (*CFComparatorFunction)(const void *val1, const void *val2, void *context);
     65 
     66 typedef struct __CFArray * CFMutableArrayRef;
     67 
     68 typedef const struct __CFAttributedString *CFAttributedStringRef;
     69 typedef struct __CFAttributedString *CFMutableAttributedStringRef;
     70 
     71 typedef const struct __CFAllocator * CFAllocatorRef;
     72 
     73 typedef const struct __CFString * CFStringRef;
     74 typedef struct __CFString * CFMutableStringRef;
     75 
     76 typedef const struct __CFDictionary * CFDictionaryRef;
     77 typedef struct __CFDictionary * CFMutableDictionaryRef;
     78 
     79 typedef struct CGImage *CGImageRef;
     80 
     81 typedef struct OpaqueJSValue* JSObjectRef;
     82 
     83 typedef JSObjectRef TTJSObjectRef;
     84 typedef unsigned int NSUInteger;
     85 
     86 CF_IMPLICIT_BRIDGING_DISABLED
     87 
     88 @interface I
     89 @property (nonatomic, readonly) void *ReturnsInnerPointer;
     90 @property (nonatomic, readonly) int *AlreadyReturnsInnerPointer NS_RETURNS_INNER_POINTER;
     91 @end
     92 
     93 @interface UIImage
     94 @property (nonatomic, readonly) CGImageRef CGImage CF_RETURNS_NOT_RETAINED;
     95 @end
     96 
     97 @interface NSData
     98 @property (nonatomic, readonly) void *bytes;
     99 @property (nonatomic, readonly) void **ptr_bytes __attribute__((availability(macosx,unavailable)));
    100 @end
    101 
    102 @interface NSMutableData
    103 @property (nonatomic, readonly) void *mutableBytes  __attribute__((deprecated)) __attribute__((unavailable));
    104 @end
    105 
    106 @interface JS
    107 @property (nonatomic, readonly) JSObjectRef JSObject; 
    108 @property (nonatomic, readonly) TTJSObjectRef JSObject1;
    109 @property (nonatomic, readonly) JSObjectRef *JSObject2;
    110 @end
    111 
    112 // rdar://15044991
    113 typedef void *SecTrustRef;
    114 
    115 @interface NSURLProtectionSpace
    116 @property (readonly) SecTrustRef serverTrust NS_AVAILABLE;
    117 @property (nonatomic, readonly) void *FOO NS_AVAILABLE;
    118 @property (readonly) void * mitTrust NS_AVAILABLE;
    119 
    120 @property (readonly) void * mittiTrust;
    121 
    122 @property (readonly) SecTrustRef XserverTrust;
    123 
    124 @property (nonatomic, readonly) SecTrustRef FOO1 NS_AVAILABLE;
    125 
    126 + (const NSURLProtectionSpace *)ProtectionSpace;
    127 
    128 // pointer personality functions
    129 @property NSUInteger (*hashFunction)(const void *item, NSUInteger (*size)(const void *item));
    130 @end
    131 
    132 @interface MustNotMigrateToInnerPointer
    133 @property (nonatomic) void *nono;
    134 @end
    135