150
|
1 // RUN: rm -rf %t
|
|
2 // RUN: %clang_cc1 -fobjc-arc -objcmt-migrate-literals -objcmt-migrate-subscripting -mt-migrate-directory %t %s -x objective-c++ -verify
|
|
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++ %s.result
|
|
5
|
|
6 #define YES __objc_yes
|
|
7 #define NO __objc_no
|
|
8
|
|
9 typedef long NSInteger;
|
|
10 typedef unsigned long NSUInteger;
|
|
11 typedef signed char BOOL;
|
|
12 #define nil ((void*) 0)
|
|
13
|
|
14 #define INT_MIN (-__INT_MAX__ -1)
|
|
15
|
|
16 @interface NSObject
|
|
17 + (id)alloc;
|
|
18 @end
|
|
19
|
|
20 @interface NSNumber : NSObject
|
|
21 @end
|
|
22
|
|
23 @interface NSNumber (NSNumberCreation)
|
|
24 - (id)initWithChar:(char)value;
|
|
25 - (id)initWithUnsignedChar:(unsigned char)value;
|
|
26 - (id)initWithShort:(short)value;
|
|
27 - (id)initWithUnsignedShort:(unsigned short)value;
|
|
28 - (id)initWithInt:(int)value;
|
|
29 - (id)initWithUnsignedInt:(unsigned int)value;
|
|
30 - (id)initWithLong:(long)value;
|
|
31 - (id)initWithUnsignedLong:(unsigned long)value;
|
|
32 - (id)initWithLongLong:(long long)value;
|
|
33 - (id)initWithUnsignedLongLong:(unsigned long long)value;
|
|
34 - (id)initWithFloat:(float)value;
|
|
35 - (id)initWithDouble:(double)value;
|
|
36 - (id)initWithBool:(BOOL)value;
|
|
37 - (id)initWithInteger:(NSInteger)value;
|
|
38 - (id)initWithUnsignedInteger:(NSUInteger)value;
|
|
39
|
|
40 + (NSNumber *)numberWithChar:(char)value;
|
|
41 + (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
|
|
42 + (NSNumber *)numberWithShort:(short)value;
|
|
43 + (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
|
|
44 + (NSNumber *)numberWithInt:(int)value;
|
|
45 + (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
|
|
46 + (NSNumber *)numberWithLong:(long)value;
|
|
47 + (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
|
|
48 + (NSNumber *)numberWithLongLong:(long long)value;
|
|
49 + (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
|
|
50 + (NSNumber *)numberWithFloat:(float)value;
|
|
51 + (NSNumber *)numberWithDouble:(double)value;
|
|
52 + (NSNumber *)numberWithBool:(BOOL)value;
|
|
53 + (NSNumber *)numberWithInteger:(NSInteger)value;
|
|
54 + (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value;
|
|
55 @end
|
|
56
|
|
57 enum {
|
|
58 NSASCIIStringEncoding = 1,
|
|
59 NSUTF8StringEncoding = 4,
|
|
60 NSUnicodeStringEncoding = 10
|
|
61 };
|
|
62 typedef NSUInteger NSStringEncoding;
|
|
63
|
|
64 @interface NSString : NSObject
|
|
65 @end
|
|
66
|
|
67 @interface NSString (NSStringExtensionMethods)
|
|
68 + (id)stringWithUTF8String:(const char *)nullTerminatedCString;
|
|
69 + (id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc;
|
|
70 + (id)stringWithCString:(const char *)bytes;
|
|
71 - (instancetype)initWithUTF8String:(const char *)nullTerminatedCString;
|
|
72 @end
|
|
73
|
|
74 enum MyEnm {
|
|
75 ME_foo
|
|
76 };
|
|
77
|
|
78 void foo() {
|
|
79 @INT_MIN;
|
|
80 bool cppb;
|
|
81 @(cppb);
|
|
82 MyEnm myenum;
|
|
83 @(myenum);
|
|
84 @(ME_foo);
|
|
85 [NSNumber numberWithDouble:cppb]; // expected-warning {{converting to boxing syntax requires casting 'bool' to 'double'}}
|
|
86 }
|
|
87
|
|
88 void boxString() {
|
|
89 NSString *s = @"box";
|
|
90 const char *cstr1;
|
|
91 char *cstr2;
|
|
92 s = @(cstr1);
|
|
93 s = @(cstr2);
|
|
94 s = @(cstr1);
|
|
95 s = @(cstr1);
|
|
96 s = [NSString stringWithCString:cstr1 encoding: NSUnicodeStringEncoding];
|
|
97 NSStringEncoding encode;
|
|
98 s = [NSString stringWithCString:cstr1 encoding:encode];
|
|
99 s = @(cstr1);
|
|
100
|
|
101 static const char strarr[] = "coolbox";
|
|
102 s = @(strarr);
|
|
103 // rdar://18080352
|
|
104 const char *utf8Bytes = "blah";
|
|
105 NSString *string1 = @(utf8Bytes);
|
|
106 NSString *string2 = @(utf8Bytes);
|
|
107 }
|