mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Allow @NSManaged to be applied to methods.
Core Data synthesizes Key-Value-Coding-compliant accessors for @NSManaged properties, but Swift won't allow them to be called without predeclaring them. In practice, '@NSManaged' on a method is the same as 'dynamic', except you /can't/ provide a body and overriding it won't work. This is not the long-term model we want (see rdar://problem/20829214), but it fixes a short-term issue with an unfortunate workaround (go through mutableOrderedSetValueForKey(_:) and similar methods). rdar://problem/17583057 Swift SVN r30523
This commit is contained in:
@@ -146,6 +146,11 @@ public:
|
||||
|
||||
void visitFuncDecl(FuncDecl *method) {
|
||||
if (!requiresObjCMethodDescriptor(method)) return;
|
||||
|
||||
// Don't emit getters/setters for @NSManaged methods.
|
||||
if (method->getAttrs().hasAttribute<NSManagedAttr>())
|
||||
return;
|
||||
|
||||
llvm::Constant *name, *imp, *types;
|
||||
emitObjCMethodDescriptorParts(IGM, method,
|
||||
/*extended*/false,
|
||||
@@ -203,7 +208,7 @@ public:
|
||||
// ObjC doesn't have a notion of class properties, so we'd only do this
|
||||
// for instance properties.
|
||||
|
||||
// Don't emit getters/setters for @NSManagedAttr properties.
|
||||
// Don't emit getters/setters for @NSManaged properties.
|
||||
if (prop->getAttrs().hasAttribute<NSManagedAttr>())
|
||||
return;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user