]> granicus.if.org Git - clang/commit
Fix a pair of bugs relating to properties in ARC.
authorJohn McCall <rjmccall@apple.com>
Mon, 20 Aug 2012 23:36:59 +0000 (23:36 +0000)
committerJohn McCall <rjmccall@apple.com>
Mon, 20 Aug 2012 23:36:59 +0000 (23:36 +0000)
commitd64c2eb83d7ec86faa4f2554935a977a19573f59
tree3d58e7ca56a49f46c7c71c6064c8af887e466081
parentbf3a96650c449a5f8dd1a818b3ce1afa8dddfc39
Fix a pair of bugs relating to properties in ARC.

First, when synthesizing an explicitly strong/retain/copy property
of Class type, don't pretend during compatibility checking that the
property is actually assign.  Instead, resolve incompatibilities
by secretly changing the type of *implicitly* __unsafe_unretained
Class ivars to be strong.  This is moderately evil but better than
what we were doing.

Second, when synthesizing the setter for a strong property of
non-retainable type, be sure to use objc_setProperty.  This is
possible when the property is decorated with the NSObject
attribute.  This is an ugly, ugly corner of the language, and
we probably ought to deprecate it.

The first is rdar://problem/12039404;  the second was noticed by
inspection while fixing the first.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162244 91177308-0d34-0410-b5e6-96231b3b80d8
docs/AutomaticReferenceCounting.html
lib/CodeGen/CGObjC.cpp
lib/Sema/SemaObjCProperty.cpp
test/CodeGenObjC/arc-property.m