Kill cocoa::deriveNamingConvention and cocoa::followsFundamentalRule. They are now just simple wrappers around method families, and method decls can cache method family lookups. Also, no one is using them right now.
The one difference between ObjCMethodDecl::getMethodFamily and Selector::getMethodFamily is that the former will do some additional sanity checking, and since CoreFoundation types don't look like Objective-C objects, an otherwise interesting method will get a method family of OMF_None. Future clients that use method families should consider how they want to handle CF types. llvm-svn: 153000
This commit is contained in:
@@ -20,46 +20,6 @@
|
||||
using namespace clang;
|
||||
using namespace ento;
|
||||
|
||||
// The "fundamental rule" for naming conventions of methods:
|
||||
// (url broken into two lines)
|
||||
// http://developer.apple.com/documentation/Cocoa/Conceptual/
|
||||
// MemoryMgmt/Tasks/MemoryManagementRules.html
|
||||
//
|
||||
// "You take ownership of an object if you create it using a method whose name
|
||||
// begins with "alloc" or "new" or contains "copy" (for example, alloc,
|
||||
// newObject, or mutableCopy), or if you send it a retain message. You are
|
||||
// responsible for relinquishing ownership of objects you own using release
|
||||
// or autorelease. Any other time you receive an object, you must
|
||||
// not release it."
|
||||
//
|
||||
|
||||
cocoa::NamingConvention cocoa::deriveNamingConvention(Selector S,
|
||||
const ObjCMethodDecl *MD) {
|
||||
switch (MD && MD->hasAttr<ObjCMethodFamilyAttr>()? MD->getMethodFamily()
|
||||
: S.getMethodFamily()) {
|
||||
case OMF_None:
|
||||
case OMF_autorelease:
|
||||
case OMF_dealloc:
|
||||
case OMF_finalize:
|
||||
case OMF_release:
|
||||
case OMF_retain:
|
||||
case OMF_retainCount:
|
||||
case OMF_self:
|
||||
case OMF_performSelector:
|
||||
return NoConvention;
|
||||
|
||||
case OMF_init:
|
||||
return InitRule;
|
||||
|
||||
case OMF_alloc:
|
||||
case OMF_copy:
|
||||
case OMF_mutableCopy:
|
||||
case OMF_new:
|
||||
return CreateRule;
|
||||
}
|
||||
llvm_unreachable("unexpected naming convention");
|
||||
}
|
||||
|
||||
bool cocoa::isRefType(QualType RetTy, StringRef Prefix,
|
||||
StringRef Name) {
|
||||
// Recursively walk the typedef stack, allowing typedefs of reference types.
|
||||
|
||||
Reference in New Issue
Block a user