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