summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-07-19 18:57:15 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2013-07-19 18:57:15 +0000
commit47b1517c52c229f50f76b86a99904e00a77901f8 (patch)
tree3f7631fb23a101ad738fc587853b9a86e7aba4c0 /clang
parentdb6d85ef92726c452e20c3a6cc55e2edd17c686a (diff)
downloadbcm5719-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.cpp3
-rw-r--r--clang/test/ARCMT/checking-in-arc.m47
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
OpenPOWER on IntegriCloud