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 42CF_IMPLICIT_BRIDGING_ENABLED 43 44typedef unsigned long CFTypeID; 45typedef unsigned long CFOptionFlags; 46typedef unsigned long CFHashCode; 47 48typedef signed long CFIndex; /*AnyObj*/ 49typedef const struct __CFArray * CFArrayRef; 50typedef struct { 51 CFIndex location; 52 CFIndex length; 53} CFRange; 54 55typedef void (*CFArrayApplierFunction)(const void *value, void *context); 56 57typedef enum CFComparisonResult : CFIndex CFComparisonResult; enum CFComparisonResult : CFIndex { 58 kCFCompareLessThan = -1L, 59 kCFCompareEqualTo = 0, 60 kCFCompareGreaterThan = 1 61}; 62 63 64typedef CFComparisonResult (*CFComparatorFunction)(const void *val1, const void *val2, void *context); 65 66typedef struct __CFArray * CFMutableArrayRef; 67 68typedef const struct __CFAttributedString *CFAttributedStringRef; 69typedef struct __CFAttributedString *CFMutableAttributedStringRef; 70 71typedef const struct __CFAllocator * CFAllocatorRef; 72 73typedef const struct __CFString * CFStringRef; 74typedef struct __CFString * CFMutableStringRef; 75 76typedef const struct __CFDictionary * CFDictionaryRef; 77typedef struct __CFDictionary * CFMutableDictionaryRef; 78 79typedef struct CGImage *CGImageRef; 80 81typedef struct OpaqueJSValue* JSObjectRef; 82 83typedef JSObjectRef TTJSObjectRef; 84typedef unsigned int NSUInteger; 85 86CF_IMPLICIT_BRIDGING_DISABLED 87 88@interface I 89- (void*) ReturnsInnerPointer; 90- (int*) AlreadyReturnsInnerPointer NS_RETURNS_INNER_POINTER; 91@end 92 93@interface UIImage 94- (CGImageRef)CGImage; 95@end 96 97@interface NSData 98- (void *)bytes; 99- (void **) ptr_bytes __attribute__((availability(macosx,unavailable))); 100@end 101 102@interface NSMutableData 103- (void *)mutableBytes __attribute__((deprecated)) __attribute__((unavailable)); 104@end 105 106@interface JS 107- (JSObjectRef)JSObject; 108- (TTJSObjectRef)JSObject1; 109- (JSObjectRef*)JSObject2; 110@end 111 112// rdar://15044991 113typedef void *SecTrustRef; 114 115@interface NSURLProtectionSpace 116@property (readonly) SecTrustRef serverTrust NS_AVAILABLE; 117- (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- (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- (void*) nono; 134- (void) setNono : (void*) val; 135@end 136