[LLVMbugs] [Bug 13446] New: There should be no default setter semantic on a readonly property

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Tue Jul 24 08:07:03 PDT 2012


http://llvm.org/bugs/show_bug.cgi?id=13446

             Bug #: 13446
           Summary: There should be no default setter semantic on a
                    readonly property
           Product: clang
           Version: unspecified
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: -New Bugs
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: negm-awad at cocoading.de
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified


A. Steps to reproduce:

1. Declare a readonly property in a header:
@interface MyClass : NSObject
@property (readonly) id property;
@end

2. Switch to readwrite in a continuation or subclass. This makes setter
semantics necessary:
@interface MyClass()
@property (readwrite,copy) id property;
@end

B. Existing behaviour:
Warning: Property attribute in continuation class does not match the primary
class

C. Reason:
The readonly declaration leaks of an explicit setter semantic. The compiler
defaults to assign. The class continuation changes the setter semantic to copy.

D. "Work-around"
Add the setter semantic to the readonly property:
@property (readonly,copy) id property;

E. Expected behaviour:
Since a readonly property does not deal with setter semantics, the compiler
should not default to anything. The setter semantics are only relevant for read
write properties. If the class continuation is used to keep the setter private,
the need of setter semantics in the interface discloses an implementation
detail.

F. Solution
Do not default the setter semantics to assign (or something else) in a readonly
property. Existing code would not break.

Amin Negm-Awad

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list