1// RUN: rm -rf %t
2// RUN: %clang_cc1 -objcmt-migrate-instancetype -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-darwin11 -fsyntax-only -x objective-c -fobjc-runtime-has-weak -fobjc-arc %s.result
5
6typedef unsigned int NSUInteger;
7typedef int NSInteger;
8typedef char BOOL;
9@class NSData, NSError, NSProtocolChecker, NSObject;
10@class NSPortNameServer, NSTimeZone;
11
12@interface NSMutableString
13@end
14
15@interface NSString @end
16
17@class NSString, NSURL;
18@interface NSString (NSStringDeprecated)
19+ (id)stringWithContentsOfFile:(NSString *)path __attribute__((availability(macosx,introduced=10.0 ,message="" )));
20+ (id)stringWithContentsOfURL:(NSURL *)url __attribute__((availability(macosx,introduced=10.0 ,message="" )));
21+ (id)stringWithCString:(const char *)bytes length:(NSUInteger)length __attribute__((availability(macosx,introduced=10.0 ,message="" )));
22+ (id)stringWithCString:(const char *)bytes __attribute__((availability(macosx,introduced=10.0 ,message="" )));
23@end
24
25
26typedef enum NSURLBookmarkResolutionOptions {
27                Bookmark
28} NSURLBookmarkResolutionOptions;
29
30@interface NSURL
31+ (instancetype)URLWithString:(NSString *)URLString;
32+ (instancetype)URLWithString:(NSString *)URLString relativeToURL:(NSURL *)baseURL;
33+ (instancetype)URLByResolvingBookmarkData:(NSData *)bookmarkData options:(NSURLBookmarkResolutionOptions)options relativeToURL:(NSURL *)relativeURL bookmarkDataIsStale:(BOOL *)isStale error:(NSError **)error __attribute__((availability(macosx,introduced=10.6)));
34@end
35
36@class NSDictionary;
37@interface NSError
38+ (instancetype)errorWithDomain:(NSString *)domain code:(NSInteger)code userInfo:(NSDictionary *)dict;
39@end
40
41
42@interface NSMutableString (NSMutableStringExtensionMethods)
43+ (instancetype)stringWithCapacity:(NSUInteger)capacity;
44@end
45
46@interface NSMutableData
47+ (instancetype)dataWithCapacity:(NSUInteger)aNumItems;
48+ (instancetype)dataWithLength:(NSUInteger)length;
49@end
50
51@interface NSMutableDictionary @end
52
53@interface NSMutableDictionary (NSSharedKeySetDictionary)
54+ (instancetype )dictionaryWithSharedKeySet:(id)keyset __attribute__((availability(macosx,introduced=10.8)));
55@end
56
57@interface NSProtocolChecker
58+ (instancetype)protocolCheckerWithTarget:(NSObject *)anObject protocol:(Protocol *)aProtocol;
59@end
60
61@interface NSConnection
62+ (instancetype)connectionWithRegisteredName:(NSString *)name host:(NSString *)hostName;
63+ (instancetype)connectionWithRegisteredName:(NSString *)name host:(NSString *)hostName usingNameServer:(NSPortNameServer *)server;
64@end
65
66@interface NSDate
67+ (instancetype)dateWithString:(NSString *)aString __attribute__((availability(macosx,introduced=10.4)));
68@end
69
70@interface NSCalendarDate : NSDate
71+ (instancetype)calendarDate __attribute__((availability(macosx,introduced=10.4)));
72+ (instancetype)dateWithString:(NSString *)description calendarFormat:(NSString *)format locale:(id)locale __attribute__((availability(macosx,introduced=10.4)));
73+ (instancetype)dateWithString:(NSString *)description calendarFormat:(NSString *)format __attribute__((availability(macosx,introduced=10.4)));
74+ (instancetype)dateWithYear:(NSInteger)year month:(NSUInteger)month day:(NSUInteger)day hour:(NSUInteger)hour minute:(NSUInteger)minute second:(NSUInteger)second timeZone:(NSTimeZone *)aTimeZone __attribute__((availability(macosx,introduced=10.4)));
75@end
76
77@interface NSUserDefaults
78+ (instancetype) standardUserDefaults;
79@end
80
81@interface NSNotificationCenter
82+ (NSNotificationCenter*) defaultCenter;
83+ (NSNotificationCenter*)  sharedCenter;
84@end
85
86@interface UIApplication
87+ (UIApplication*)sharedApplication;
88+ (UIApplication*) defaultApplication;
89@end
90
91//===----------------------------------------------------------------------===//
92// Method name that has a null IdentifierInfo* for its first selector slot.
93// This test just makes sure that we handle it.
94//===----------------------------------------------------------------------===//
95@interface TestNullIdentifier
96@end
97
98@implementation TestNullIdentifier
99+ (id):(int)x, ... {
100  return 0;
101}
102@end
103
104