diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2013-07-19 18:57:15 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2013-07-19 18:57:15 +0000 |
commit | 47b1517c52c229f50f76b86a99904e00a77901f8 (patch) | |
tree | 3f7631fb23a101ad738fc587853b9a86e7aba4c0 /clang | |
parent | db6d85ef92726c452e20c3a6cc55e2edd17c686a (diff) | |
download | bcm5719-llvm-47b1517c52c229f50f76b86a99904e00a77901f8.tar.gz bcm5719-llvm-47b1517c52c229f50f76b86a99904e00a77901f8.zip |
[arcmt] After checking is successful disable auto-synthesize to avoid "@synthesize of 'weak' property is only
allowed in ARC" errors.
rdar://14461559
llvm-svn: 186709
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/ARCMigrate/ARCMT.cpp | 3 | ||||
-rw-r--r-- | clang/test/ARCMT/checking-in-arc.m | 47 |
2 files changed, 50 insertions, 0 deletions
diff --git a/clang/lib/ARCMigrate/ARCMT.cpp b/clang/lib/ARCMigrate/ARCMT.cpp index a6d48762fe5..8a2b939ac30 100644 --- a/clang/lib/ARCMigrate/ARCMT.cpp +++ b/clang/lib/ARCMigrate/ARCMT.cpp @@ -324,6 +324,9 @@ bool arcmt::checkForManualIssues(CompilerInvocation &origCI, // If we are migrating code that gets the '-fobjc-arc' flag, make sure // to remove it so that we don't get errors from normal compilation. origCI.getLangOpts()->ObjCAutoRefCount = false; + // Disable auto-synthesize to avoid "@synthesize of 'weak' property is only + // allowed in ARC" errors. + origCI.getLangOpts()->ObjCDefaultSynthProperties = false; return capturedDiags.hasErrors() || testAct.hasReportedErrors(); } diff --git a/clang/test/ARCMT/checking-in-arc.m b/clang/test/ARCMT/checking-in-arc.m new file mode 100644 index 00000000000..5a1b3d3f06a --- /dev/null +++ b/clang/test/ARCMT/checking-in-arc.m @@ -0,0 +1,47 @@ +// RUN: %clang_cc1 -arcmt-check -fobjc-arc -fobjc-default-synthesize-properties -fobjc-runtime=macosx-10.8.0 -triple x86_64-apple-darwin12 -fblocks -Werror %s +// DISABLE: mingw32 + +#if __has_feature(objc_arc) +#define NS_AUTOMATED_REFCOUNT_UNAVAILABLE __attribute__((unavailable("not available in automatic reference counting mode"))) +#else +#define NS_AUTOMATED_REFCOUNT_UNAVAILABLE +#endif + +typedef const void * CFTypeRef; +CFTypeRef CFBridgingRetain(id X); +id CFBridgingRelease(CFTypeRef); + +typedef int BOOL; +typedef unsigned NSUInteger; + +@protocol NSObject +- (id)retain NS_AUTOMATED_REFCOUNT_UNAVAILABLE; +- (NSUInteger)retainCount NS_AUTOMATED_REFCOUNT_UNAVAILABLE; +- (oneway void)release NS_AUTOMATED_REFCOUNT_UNAVAILABLE; +- (id)autorelease NS_AUTOMATED_REFCOUNT_UNAVAILABLE; +@end + +@interface NSObject <NSObject> {} +- (id)init; + ++ (id)new; ++ (id)alloc; +- (void)dealloc; + +- (void)finalize; + +- (id)copy; +- (id)mutableCopy; +@end + +typedef const struct __CFString * CFStringRef; +extern const CFStringRef kUTTypePlainText; +extern const CFStringRef kUTTypeRTF; +@class NSString; + +@interface Test : NSObject +@property (weak) NSString *weakProperty; +@end + +@implementation Test +@end |