xref: /aosp_15_r20/external/clang/test/ARCMT/nonobjc-to-objc-cast.m.result (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -fobjc-arc -x objective-c %s.result
2*67e74705SXin Li// RUN: arcmt-test --args -triple x86_64-apple-darwin10 -fsyntax-only -x objective-c %s > %t
3*67e74705SXin Li// RUN: diff %t %s.result
4*67e74705SXin Li
5*67e74705SXin Li#include "Common.h"
6*67e74705SXin Li
7*67e74705SXin Litypedef const struct __CFString * CFStringRef;
8*67e74705SXin Liextern const CFStringRef kUTTypePlainText;
9*67e74705SXin Liextern const CFStringRef kUTTypeRTF;
10*67e74705SXin Liextern CFStringRef kNonConst;
11*67e74705SXin Li
12*67e74705SXin Litypedef const struct __CFAllocator * CFAllocatorRef;
13*67e74705SXin Litypedef const struct __CFUUID * CFUUIDRef;
14*67e74705SXin Li
15*67e74705SXin Liextern const CFAllocatorRef kCFAllocatorDefault;
16*67e74705SXin Li
17*67e74705SXin Liextern CFStringRef CFUUIDCreateString(CFAllocatorRef alloc, CFUUIDRef uuid);
18*67e74705SXin Li
19*67e74705SXin Listruct StrS {
20*67e74705SXin Li  CFStringRef sref_member;
21*67e74705SXin Li};
22*67e74705SXin Li
23*67e74705SXin Li@interface NSString : NSObject {
24*67e74705SXin Li  CFStringRef sref;
25*67e74705SXin Li  struct StrS *strS;
26*67e74705SXin Li}
27*67e74705SXin Li-(id)string;
28*67e74705SXin Li-(id)newString;
29*67e74705SXin Li@end
30*67e74705SXin Li
31*67e74705SXin Livoid f(BOOL b, id p) {
32*67e74705SXin Li  NSString *str = (NSString *)kUTTypePlainText; // no change
33*67e74705SXin Li  str = b ? kUTTypeRTF : kUTTypePlainText; // no change
34*67e74705SXin Li  str = (NSString *)(b ? kUTTypeRTF : kUTTypePlainText); // no change
35*67e74705SXin Li  str = (NSString *)p; // no change.
36*67e74705SXin Li
37*67e74705SXin Li  str = (__bridge NSString *)kNonConst;
38*67e74705SXin Li  str = (__bridge NSString *)(b ? kUTTypeRTF : kNonConst);
39*67e74705SXin Li  str = (__bridge NSString *)(b ? kUTTypeRTF : kNonConst);
40*67e74705SXin Li
41*67e74705SXin Li  CFUUIDRef   _uuid;
42*67e74705SXin Li  NSString *_uuidString = (NSString *)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, _uuid));
43*67e74705SXin Li  _uuidString = (NSString *)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, _uuid));
44*67e74705SXin Li  _uuidString = CFBridgingRelease(CFRetain(_uuid));
45*67e74705SXin Li}
46*67e74705SXin Li
47*67e74705SXin Li@implementation NSString (StrExt)
48*67e74705SXin Li- (NSString *)stringEscapedAsURI {
49*67e74705SXin Li  CFStringRef str = (__bridge CFStringRef)self;
50*67e74705SXin Li  CFStringRef str2 = (__bridge CFStringRef)(self);
51*67e74705SXin Li  return self;
52*67e74705SXin Li}
53*67e74705SXin Li@end
54*67e74705SXin Li
55*67e74705SXin Li@implementation NSString
56*67e74705SXin Li-(id)string {
57*67e74705SXin Li  if (0)
58*67e74705SXin Li    return (__bridge id)(sref);
59*67e74705SXin Li  else
60*67e74705SXin Li    return (__bridge id)(strS->sref_member);
61*67e74705SXin Li}
62*67e74705SXin Li-(id)newString { return 0; }
63*67e74705SXin Li@end
64*67e74705SXin Li
65*67e74705SXin Liextern void consumeParam(CFStringRef CF_CONSUMED p);
66*67e74705SXin Li
67*67e74705SXin Livoid f2(NSString *s) {
68*67e74705SXin Li  CFStringRef ref = (__bridge CFStringRef)([s string]);
69*67e74705SXin Li  ref = (__bridge CFStringRef)[s string];
70*67e74705SXin Li  ref = (__bridge CFStringRef)(s.string);
71*67e74705SXin Li  ref = CFBridgingRetain([NSString new]);
72*67e74705SXin Li  ref = CFBridgingRetain([s newString]);
73*67e74705SXin Li  ref = (CFStringRef)CFBridgingRetain([NSString new]);
74*67e74705SXin Li  ref = CFBridgingRetain([[NSString alloc] init]);
75*67e74705SXin Li  ref = CFBridgingRetain([s string]);
76*67e74705SXin Li  ref = (CFStringRef)CFBridgingRetain([s string]);
77*67e74705SXin Li  ref = CFBridgingRetain([s string]);
78*67e74705SXin Li  ref = CFBridgingRetain(s);
79*67e74705SXin Li  ref = CFBridgingRetain(s);
80*67e74705SXin Li
81*67e74705SXin Li  consumeParam((CFStringRef)CFBridgingRetain(s));
82*67e74705SXin Li  consumeParam(CFBridgingRetain(s));
83*67e74705SXin Li}
84