From: Argyrios Kyrtzidis Date: Tue, 8 Nov 2011 23:09:34 +0000 (+0000) Subject: [arcmt] Take into account that all properties are strong-by-default now and fix the... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8b08eb34565a644d3345b1bfee3542a8f4a6c300;p=clang [arcmt] Take into account that all properties are strong-by-default now and fix the test. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144146 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/ARCMigrate/TransProperties.cpp b/lib/ARCMigrate/TransProperties.cpp index f9c0206134..0686dd3c2e 100644 --- a/lib/ARCMigrate/TransProperties.cpp +++ b/lib/ARCMigrate/TransProperties.cpp @@ -50,11 +50,9 @@ class PropertiesRewriter { enum PropActionKind { PropAction_None, - PropAction_RetainToStrong, PropAction_RetainRemoved, PropAction_AssignRemoved, PropAction_AssignRewritten, - PropAction_MaybeAddStrong, PropAction_MaybeAddWeakOrUnsafe }; @@ -163,9 +161,6 @@ private: switch (kind) { case PropAction_None: return; - case PropAction_RetainToStrong: - rewriteAttribute("retain", "strong", atLoc); - return; case PropAction_RetainRemoved: removeAttribute("retain", atLoc); return; @@ -173,8 +168,6 @@ private: return removeAssignForDefaultStrong(props, atLoc); case PropAction_AssignRewritten: return rewriteAssign(props, atLoc); - case PropAction_MaybeAddStrong: - return maybeAddStrongAttr(props, atLoc); case PropAction_MaybeAddWeakOrUnsafe: return maybeAddWeakOrUnsafeUnretainedAttr(props, atLoc); } @@ -199,11 +192,8 @@ private: return; if (propAttrs & ObjCPropertyDecl::OBJC_PR_retain) { - if (propAttrs & ObjCPropertyDecl::OBJC_PR_readonly) - return doPropAction(PropAction_RetainToStrong, props, atLoc); - else - // strong is the default. - return doPropAction(PropAction_RetainRemoved, props, atLoc); + // strong is the default. + return doPropAction(PropAction_RetainRemoved, props, atLoc); } bool HasIvarAssignedAPlusOneObject = hasIvarAssignedAPlusOneObject(props); @@ -258,17 +248,13 @@ private: void maybeAddWeakOrUnsafeUnretainedAttr(PropsTy &props, SourceLocation atLoc) const { - ObjCPropertyDecl::PropertyAttributeKind propAttrs = getPropertyAttrs(props); - bool canUseWeak = canApplyWeak(Pass.Ctx, getPropertyType(props), /*AllowOnUnknownClass=*/Pass.isGCMigration()); - if (!(propAttrs & ObjCPropertyDecl::OBJC_PR_readonly) || - !hasAllIvarsBacked(props)) { - bool addedAttr = addAttribute(canUseWeak ? "weak" : "unsafe_unretained", - atLoc); - if (!addedAttr) - canUseWeak = false; - } + + bool addedAttr = addAttribute(canUseWeak ? "weak" : "unsafe_unretained", + atLoc); + if (!addedAttr) + canUseWeak = false; for (PropsTy::iterator I = props.begin(), E = props.end(); I != E; ++I) { if (isUserDeclared(I->IvarD)) @@ -284,27 +270,6 @@ private: } } - void maybeAddStrongAttr(PropsTy &props, SourceLocation atLoc) const { - ObjCPropertyDecl::PropertyAttributeKind propAttrs = getPropertyAttrs(props); - - if (!(propAttrs & ObjCPropertyDecl::OBJC_PR_readonly)) - return; // 'strong' by default. - - if (!hasAllIvarsBacked(props)) { - addAttribute("strong", atLoc); - } - - for (PropsTy::iterator I = props.begin(), E = props.end(); I != E; ++I) { - if (I->ImplD) { - Pass.TA.clearDiagnostic(diag::err_arc_assign_property_ownership, - I->ImplD->getLocation()); - Pass.TA.clearDiagnostic( - diag::err_arc_objc_property_default_assign_on_object, - I->ImplD->getLocation()); - } - } - } - bool removeAttribute(StringRef fromAttr, SourceLocation atLoc) const { return rewriteAttribute(fromAttr, StringRef(), atLoc); } diff --git a/test/ARCMT/assign-prop-with-arc-runtime.m b/test/ARCMT/assign-prop-with-arc-runtime.m index 8845010895..8408a1858b 100644 --- a/test/ARCMT/assign-prop-with-arc-runtime.m +++ b/test/ARCMT/assign-prop-with-arc-runtime.m @@ -14,8 +14,7 @@ typedef _NSCachedAttributedString *BadClassForWeak; @class Forw; @interface Foo : NSObject { - Foo *w, *q1, *q2; - __weak Foo *x; + Foo *x, *w, *q1, *q2; WeakOptOut *oo; BadClassForWeak bcw; id not_safe1; @@ -23,7 +22,7 @@ typedef _NSCachedAttributedString *BadClassForWeak; Forw *not_safe3; Foo *assign_plus1; } -@property (readonly) __weak Foo *x; +@property (readonly) Foo *x; @property (assign) Foo *w; @property Foo *q1, *q2; @property (assign) WeakOptOut *oo; diff --git a/test/ARCMT/assign-prop-with-arc-runtime.m.result b/test/ARCMT/assign-prop-with-arc-runtime.m.result index 7cb7e1722b..56906f7002 100644 --- a/test/ARCMT/assign-prop-with-arc-runtime.m.result +++ b/test/ARCMT/assign-prop-with-arc-runtime.m.result @@ -14,8 +14,7 @@ typedef _NSCachedAttributedString *BadClassForWeak; @class Forw; @interface Foo : NSObject { - Foo *__weak w, *__weak q1, *__weak q2; - __weak Foo *x; + Foo *__weak x, *__weak w, *__weak q1, *__weak q2; WeakOptOut *__unsafe_unretained oo; BadClassForWeak __unsafe_unretained bcw; id __unsafe_unretained not_safe1; @@ -23,7 +22,7 @@ typedef _NSCachedAttributedString *BadClassForWeak; Forw *__unsafe_unretained not_safe3; Foo *assign_plus1; } -@property (readonly) __weak Foo *x; +@property (weak, readonly) Foo *x; @property (weak) Foo *w; @property (weak) Foo *q1, *q2; @property (unsafe_unretained) WeakOptOut *oo; @@ -58,12 +57,12 @@ typedef _NSCachedAttributedString *BadClassForWeak; @end @interface TestExt -@property (strong,readonly) TestExt *x1; +@property (readonly) TestExt *x1; @property (weak, readonly) TestExt *x2; @end @interface TestExt() -@property (strong,readwrite) TestExt *x1; +@property (readwrite) TestExt *x1; @property (weak, readwrite) TestExt *x2; @end