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 41CF_IMPLICIT_BRIDGING_ENABLED 42 43typedef unsigned long CFTypeID; 44typedef unsigned long CFOptionFlags; 45typedef unsigned long CFHashCode; 46 47typedef signed long CFIndex; /*AnyObj*/ 48typedef const struct __CFArray * CFArrayRef; 49typedef struct { 50 CFIndex location; 51 CFIndex length; 52} CFRange; 53 54typedef void (*CFArrayApplierFunction)(const void *value, void *context); 55 56typedef enum CFComparisonResult : CFIndex CFComparisonResult; enum CFComparisonResult : CFIndex { 57 kCFCompareLessThan = -1L, 58 kCFCompareEqualTo = 0, 59 kCFCompareGreaterThan = 1 60}; 61 62 63typedef CFComparisonResult (*CFComparatorFunction)(const void *val1, const void *val2, void *context); 64 65typedef struct __CFArray * CFMutableArrayRef; 66 67typedef const struct __CFAttributedString *CFAttributedStringRef; 68typedef struct __CFAttributedString *CFMutableAttributedStringRef; 69 70typedef const struct __CFAllocator * CFAllocatorRef; 71 72typedef const struct __CFString * CFStringRef; 73typedef struct __CFString * CFMutableStringRef; 74 75typedef const struct __CFDictionary * CFDictionaryRef; 76typedef struct __CFDictionary * CFMutableDictionaryRef; 77 78typedef struct CGImage *CGImageRef; 79 80typedef struct OpaqueJSValue* JSObjectRef; 81 82typedef JSObjectRef TTJSObjectRef; 83typedef unsigned int NSUInteger; 84 85CF_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 112typedef 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