[clang] Handle __declspec() attributes in using
[llvm-project.git] / clang / test / ARCMT / objcmt-ns-returns-inner-pointer.m
blobbff7d80b94145c012b1d7a674978c6e39e589ed4
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
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
10 #define CF_IMPLICIT_BRIDGING_ENABLED _Pragma("clang arc_cf_code_audited begin")
12 #define CF_IMPLICIT_BRIDGING_DISABLED _Pragma("clang arc_cf_code_audited end")
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
39 #define NS_AVAILABLE __attribute__((availability(macosx,introduced=10.0)))
41 CF_IMPLICIT_BRIDGING_ENABLED
43 typedef unsigned long CFTypeID;
44 typedef unsigned long CFOptionFlags;
45 typedef unsigned long CFHashCode;
47 typedef signed long CFIndex; /*AnyObj*/
48 typedef const struct __CFArray * CFArrayRef;
49 typedef struct {
50     CFIndex location;
51     CFIndex length;
52 } CFRange;
54 typedef void (*CFArrayApplierFunction)(const void *value, void *context);
56 typedef enum CFComparisonResult : CFIndex CFComparisonResult; enum CFComparisonResult : CFIndex {
57     kCFCompareLessThan = -1L,
58     kCFCompareEqualTo = 0,
59     kCFCompareGreaterThan = 1
63 typedef CFComparisonResult (*CFComparatorFunction)(const void *val1, const void *val2, void *context);
65 typedef struct __CFArray * CFMutableArrayRef;
67 typedef const struct __CFAttributedString *CFAttributedStringRef;
68 typedef struct __CFAttributedString *CFMutableAttributedStringRef;
70 typedef const struct __CFAllocator * CFAllocatorRef;
72 typedef const struct __CFString * CFStringRef;
73 typedef struct __CFString * CFMutableStringRef;
75 typedef const struct __CFDictionary * CFDictionaryRef;
76 typedef struct __CFDictionary * CFMutableDictionaryRef;
78 typedef struct CGImage *CGImageRef;
80 typedef struct OpaqueJSValue* JSObjectRef;
82 typedef JSObjectRef TTJSObjectRef;
83 typedef unsigned int NSUInteger;
85 CF_IMPLICIT_BRIDGING_DISABLED
87 @interface I
88 - (void*) ReturnsInnerPointer;
89 - (int*)  AlreadyReturnsInnerPointer NS_RETURNS_INNER_POINTER;
90 @end
92 @interface UIImage
93 - (CGImageRef)CGImage;
94 @end
96 @interface NSData
97 - (void *)bytes;
98 - (void **) ptr_bytes __attribute__((availability(macosx,unavailable)));
99 @end
101 @interface NSMutableData
102 - (void *)mutableBytes  __attribute__((deprecated)) __attribute__((unavailable));
103 @end
105 @interface JS
106 - (JSObjectRef)JSObject; 
107 - (TTJSObjectRef)JSObject1;
108 - (JSObjectRef*)JSObject2;
109 @end
111 // rdar://15044991
112 typedef void *SecTrustRef;
114 @interface NSURLProtectionSpace
115 @property (readonly) SecTrustRef serverTrust NS_AVAILABLE;
116 - (void *) FOO NS_AVAILABLE;
117 @property (readonly) void * mitTrust NS_AVAILABLE;
119 @property (readonly) void * mittiTrust;
121 @property (readonly) SecTrustRef XserverTrust;
123 - (SecTrustRef) FOO1 NS_AVAILABLE;
125 + (const NSURLProtectionSpace *)ProtectionSpace;
127 // pointer personality functions
128 @property NSUInteger (*hashFunction)(const void *item, NSUInteger (*size)(const void *item));
129 @end