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
7 #ifndef NS_RETURNS_INNER_POINTER // defined in iOS 6 for sure
8 #define NS_RETURNS_INNER_POINTER __attribute__((objc_returns_inner_pointer))
11 #define CF_IMPLICIT_BRIDGING_ENABLED _Pragma("clang arc_cf_code_audited begin")
13 #define CF_IMPLICIT_BRIDGING_DISABLED _Pragma("clang arc_cf_code_audited end")
15 #if __has_feature(attribute_ns_returns_retained)
16 #define NS_RETURNS_RETAINED __attribute__((ns_returns_retained))
18 #if __has_feature(attribute_cf_returns_retained)
19 #define CF_RETURNS_RETAINED __attribute__((cf_returns_retained))
21 #if __has_feature(attribute_ns_returns_not_retained)
22 #define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained))
24 #if __has_feature(attribute_cf_returns_not_retained)
25 #define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained))
27 #if __has_feature(attribute_ns_consumes_self)
28 #define NS_CONSUMES_SELF __attribute__((ns_consumes_self))
30 #if __has_feature(attribute_ns_consumed)
31 #define NS_CONSUMED __attribute__((ns_consumed))
33 #if __has_feature(attribute_cf_consumed)
34 #define CF_CONSUMED __attribute__((cf_consumed))
36 #if __has_attribute(ns_returns_autoreleased)
37 #define NS_RETURNS_AUTORELEASED __attribute__((ns_returns_autoreleased))
40 #define NS_AVAILABLE __attribute__((availability(macosx,introduced=10.0)))
42 CF_IMPLICIT_BRIDGING_ENABLED
44 typedef unsigned long CFTypeID;
45 typedef unsigned long CFOptionFlags;
46 typedef unsigned long CFHashCode;
48 typedef signed long CFIndex; /*AnyObj*/
49 typedef const struct __CFArray * CFArrayRef;
55 typedef void (*CFArrayApplierFunction)(const void *value, void *context);
57 typedef enum CFComparisonResult : CFIndex CFComparisonResult; enum CFComparisonResult : CFIndex {
58 kCFCompareLessThan = -1L,
59 kCFCompareEqualTo = 0,
60 kCFCompareGreaterThan = 1
64 typedef CFComparisonResult (*CFComparatorFunction)(const void *val1, const void *val2, void *context);
66 typedef struct __CFArray * CFMutableArrayRef;
68 typedef const struct __CFAttributedString *CFAttributedStringRef;
69 typedef struct __CFAttributedString *CFMutableAttributedStringRef;
71 typedef const struct __CFAllocator * CFAllocatorRef;
73 typedef const struct __CFString * CFStringRef;
74 typedef struct __CFString * CFMutableStringRef;
76 typedef const struct __CFDictionary * CFDictionaryRef;
77 typedef struct __CFDictionary * CFMutableDictionaryRef;
79 typedef struct CGImage *CGImageRef;
81 typedef struct OpaqueJSValue* JSObjectRef;
83 typedef JSObjectRef TTJSObjectRef;
84 typedef unsigned int NSUInteger;
86 CF_IMPLICIT_BRIDGING_DISABLED
89 @property (nonatomic, readonly) void *ReturnsInnerPointer;
90 @property (nonatomic, readonly) int *AlreadyReturnsInnerPointer NS_RETURNS_INNER_POINTER;
94 @property (nonatomic, readonly) CGImageRef CGImage CF_RETURNS_NOT_RETAINED;
98 @property (nonatomic, readonly) void *bytes;
99 @property (nonatomic, readonly) void **ptr_bytes __attribute__((availability(macosx,unavailable)));
102 @interface NSMutableData
103 @property (nonatomic, readonly) void *mutableBytes __attribute__((deprecated)) __attribute__((unavailable));
107 @property (nonatomic, readonly) JSObjectRef JSObject;
108 @property (nonatomic, readonly) TTJSObjectRef JSObject1;
109 @property (nonatomic, readonly) JSObjectRef *JSObject2;
113 typedef void *SecTrustRef;
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;
120 @property (readonly) void * mittiTrust;
122 @property (readonly) SecTrustRef XserverTrust;
124 @property (nonatomic, readonly) SecTrustRef FOO1 NS_AVAILABLE;
126 + (const NSURLProtectionSpace *)ProtectionSpace;
128 // pointer personality functions
129 @property NSUInteger (*hashFunction)(const void *item, NSUInteger (*size)(const void *item));
132 @interface MustNotMigrateToInnerPointer
133 @property (nonatomic) void *nono;