]> granicus.if.org Git - clang/commitdiff
Use descriptive enum instead of raw integers for checkUnsafeAssignLiteral().
authorTed Kremenek <kremenek@apple.com>
Fri, 21 Dec 2012 19:45:33 +0000 (19:45 +0000)
committerTed Kremenek <kremenek@apple.com>
Fri, 21 Dec 2012 19:45:33 +0000 (19:45 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170920 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaChecking.cpp

index 8b0d579423c632ef1a1f96102a1ae8ce7a2c894f..c2dabb45afecbeb985a54a14f090b511de28581a 100644 (file)
@@ -5753,26 +5753,28 @@ static bool checkUnsafeAssignLiteral(Sema &S, SourceLocation Loc,
   // immediately zapped in a weak reference.  Note that we explicitly
   // allow ObjCStringLiterals, since those are designed to never really die.
   RHS = RHS->IgnoreParenImpCasts();
-  unsigned kind = 4;
+  // This enum needs to match with the 'select' in warn_arc_literal_assign.
+  enum Kind { Dictionary = 0, Array, Block, BoxedE, None };
+  unsigned kind = None;
   switch (RHS->getStmtClass()) {
     default:
       break;
     case Stmt::ObjCDictionaryLiteralClass:
-      kind = 0;
+      kind = Dictionary;
       break;
     case Stmt::ObjCArrayLiteralClass:
-      kind = 1;
+      kind = Array;
       break;
     case Stmt::BlockExprClass:
-      kind = 2;
+      kind = Block;
       break;
     case Stmt::ObjCBoxedExprClass:
-      kind = 3;
+      kind = BoxedE;
       break;
   }
-  if (kind < 4) {
+  if (kind != None) {
     S.Diag(Loc, diag::warn_arc_literal_assign)
-    << kind
+    << (unsigned) kind
     << (isProperty ? 0 : 1)
     << RHS->getSourceRange();
     return true;