]> granicus.if.org Git - clang/commitdiff
Simplify.
authorDaniel Dunbar <daniel@zuster.org>
Sat, 17 Oct 2009 18:12:21 +0000 (18:12 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Sat, 17 Oct 2009 18:12:21 +0000 (18:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84338 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/BasicObjCFoundationChecks.cpp

index af300f36fa7219ed7532530315e348bcba548651..c4d73ab9555eb92c6161606c1dfa16e6d425827d 100644 (file)
@@ -62,7 +62,7 @@ class VISIBILITY_HIDDEN BasicObjCFoundationChecks : public GRSimpleAPICheck {
   BugReporter& BR;
   ASTContext &Ctx;
 
-  bool isNSString(const ObjCInterfaceType *T, const char* suffix);
+  bool isNSString(const ObjCInterfaceType *T, llvm::StringRef suffix);
   bool AuditNSString(ExplodedNode* N, const ObjCMessageExpr* ME);
 
   void Warn(ExplodedNode* N, const Expr* E, const std::string& s);
@@ -114,18 +114,8 @@ bool BasicObjCFoundationChecks::Audit(ExplodedNode* N,
   if (!ReceiverType)
     return false;
 
-  const char* name = ReceiverType->getDecl()->getIdentifier()->getName();
-
-  if (!name)
-    return false;
-
-  if (name[0] != 'N' || name[1] != 'S')
-    return false;
-
-  name += 2;
-
-  // FIXME: Make all of this faster.
-  if (isNSString(ReceiverType, name))
+  if (isNSString(ReceiverType,
+                 ReceiverType->getDecl()->getIdentifier()->getNameStr()))
     return AuditNSString(N, ME);
 
   return false;
@@ -158,8 +148,8 @@ bool BasicObjCFoundationChecks::CheckNilArg(ExplodedNode* N, unsigned Arg) {
 //===----------------------------------------------------------------------===//
 
 bool BasicObjCFoundationChecks::isNSString(const ObjCInterfaceType *T,
-                                           const char* suffix) {
-  return !strcmp("String", suffix) || !strcmp("MutableString", suffix);
+                                           llvm::StringRef ClassName) {
+  return ClassName == "NSString" || ClassName == "NSMutableString";
 }
 
 bool BasicObjCFoundationChecks::AuditNSString(ExplodedNode* N,