Tweak the interface for analyzing the CF conventions for a name
to take a FunctionDecl* instead of an llvm::StringRef. Eventually we might push more logic in there, like using slightly different conventions for C++ methods. Also, fix a bug where 'copy' and 'create' were being caught in non-camel-cased strings. We want copyFoo and CopyFoo and XCopy but not Xcopy or xcopy. llvm-svn: 140911
This commit is contained in:
@@ -125,7 +125,13 @@ bool cocoa::isCocoaObjectRef(QualType Ty) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool coreFoundation::followsCreateRule(StringRef functionName) {
|
||||
bool coreFoundation::followsCreateRule(const FunctionDecl *fn) {
|
||||
// For now, *just* base this on the function name, not on anything else.
|
||||
|
||||
const IdentifierInfo *ident = fn->getIdentifier();
|
||||
if (!ident) return false;
|
||||
StringRef functionName = ident->getName();
|
||||
|
||||
StringRef::iterator it = functionName.begin();
|
||||
StringRef::iterator start = it;
|
||||
StringRef::iterator endI = functionName.end();
|
||||
@@ -136,6 +142,10 @@ bool coreFoundation::followsCreateRule(StringRef functionName) {
|
||||
// Search for the first character. It can either be 'C' or 'c'.
|
||||
char ch = *it;
|
||||
if (ch == 'C' || ch == 'c') {
|
||||
// Make sure this isn't something like 'recreate' or 'Scopy'.
|
||||
if (ch == 'c' && it != start && isalpha(*(it - 1)))
|
||||
continue;
|
||||
|
||||
++it;
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user