Use descriptive enum instead of raw integers for checkUnsafeAssignLiteral().

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170920 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaChecking.cpp b/lib/Sema/SemaChecking.cpp
index 8b0d579..c2dabb4 100644
--- a/lib/Sema/SemaChecking.cpp
+++ b/lib/Sema/SemaChecking.cpp
@@ -5753,26 +5753,28 @@
   // 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;