diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-06-07 00:44:06 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-06-07 00:44:06 +0000 |
commit | 76a5245d7fb558625453ebe2281ee0bc9c93c245 (patch) | |
tree | f1d84c4ae755e8b86c4b9008be6700542340ae61 /test/ARCMT/nonobjc-to-objc-cast.m | |
parent | e14da79c7b1c336b72e6a4548f53b1a9534f7e0d (diff) |
[arcmt] At an unbridged cast error, if we're returning a load-of-ivar from a +0 method,
automatically insert a __bridge cast.
radar://11560638
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158127 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/ARCMT/nonobjc-to-objc-cast.m')
-rw-r--r-- | test/ARCMT/nonobjc-to-objc-cast.m | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/test/ARCMT/nonobjc-to-objc-cast.m b/test/ARCMT/nonobjc-to-objc-cast.m index fcdcd89c9c..55b6655fa4 100644 --- a/test/ARCMT/nonobjc-to-objc-cast.m +++ b/test/ARCMT/nonobjc-to-objc-cast.m @@ -5,11 +5,6 @@ #include "Common.h" -@interface NSString : NSObject --(id)string; --(id)newString; -@end - typedef const struct __CFString * CFStringRef; extern const CFStringRef kUTTypePlainText; extern const CFStringRef kUTTypeRTF; @@ -21,6 +16,18 @@ extern const CFAllocatorRef kCFAllocatorDefault; extern CFStringRef CFUUIDCreateString(CFAllocatorRef alloc, CFUUIDRef uuid); +struct StrS { + CFStringRef sref_member; +}; + +@interface NSString : NSObject { + CFStringRef sref; + struct StrS *strS; +} +-(id)string; +-(id)newString; +@end + void f(BOOL b, id p) { NSString *str = (NSString *)kUTTypePlainText; str = b ? kUTTypeRTF : kUTTypePlainText; @@ -41,6 +48,16 @@ void f(BOOL b, id p) { } @end +@implementation NSString +-(id)string { + if (0) + return sref; + else + return strS->sref_member; +} +-(id)newString { return 0; } +@end + extern void consumeParam(CFStringRef CF_CONSUMED p); void f2(NSString *s) { |