diff options
Diffstat (limited to 'clang/lib/Analysis/CocoaConventions.cpp')
-rw-r--r-- | clang/lib/Analysis/CocoaConventions.cpp | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/clang/lib/Analysis/CocoaConventions.cpp b/clang/lib/Analysis/CocoaConventions.cpp index 4d57623e216..b2d416c171a 100644 --- a/clang/lib/Analysis/CocoaConventions.cpp +++ b/clang/lib/Analysis/CocoaConventions.cpp @@ -7,7 +7,7 @@ // //===----------------------------------------------------------------------===// // -// This file implements cocoa naming convention analysis. +// This file implements cocoa naming convention analysis. // //===----------------------------------------------------------------------===// @@ -34,15 +34,15 @@ bool cocoa::isRefType(QualType RetTy, StringRef Prefix, return false; RetTy = TD->getDecl()->getUnderlyingType(); } - + if (Name.empty()) return false; - + // Is the type void*? const PointerType* PT = RetTy->getAs<PointerType>(); if (!(PT->getPointeeType().getUnqualifiedType()->isVoidType())) return false; - + // Does the name start with the prefix? return Name.startswith(Prefix); } @@ -66,32 +66,32 @@ bool coreFoundation::isCFObjectRef(QualType T) { bool cocoa::isCocoaObjectRef(QualType Ty) { if (!Ty->isObjCObjectPointerType()) return false; - + const ObjCObjectPointerType *PT = Ty->getAs<ObjCObjectPointerType>(); - + // Can be true for objects with the 'NSObject' attribute. if (!PT) return true; - + // We assume that id<..>, id, Class, and Class<..> all represent tracked // objects. if (PT->isObjCIdType() || PT->isObjCQualifiedIdType() || PT->isObjCClassType() || PT->isObjCQualifiedClassType()) return true; - + // Does the interface subclass NSObject? // FIXME: We can memoize here if this gets too expensive. const ObjCInterfaceDecl *ID = PT->getInterfaceDecl(); - + // Assume that anything declared with a forward declaration and no // @interface subclasses NSObject. if (!ID->hasDefinition()) return true; - + for ( ; ID ; ID = ID->getSuperClass()) if (ID->getIdentifier()->getName() == "NSObject") return true; - + return false; } @@ -101,11 +101,11 @@ bool coreFoundation::followsCreateRule(const FunctionDecl *fn) { 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(); - + while (true) { // Scan for the start of 'create' or 'copy'. for ( ; it != endI ; ++it) { @@ -124,7 +124,7 @@ bool coreFoundation::followsCreateRule(const FunctionDecl *fn) { // Did we hit the end of the string? If so, we didn't find a match. if (it == endI) return false; - + // Scan for *lowercase* 'reate' or 'opy', followed by no lowercase // character. StringRef suffix = functionName.substr(it - start); @@ -137,10 +137,10 @@ bool coreFoundation::followsCreateRule(const FunctionDecl *fn) { // Keep scanning. continue; } - + if (it == endI || !isLowercase(*it)) return true; - + // If we matched a lowercase character, it isn't the end of the // word. Keep scanning. } |