[index] Remove redundancy between symbol kind and language

Condense the ObjCKIND and CXXKIND options into just KIND, since the
language was already specified on a per-symbol basis and this
information was redundant. This only changes the internal
representation; naturally the libclang interface remains the same.

llvm-svn: 264423
diff --git a/clang/lib/Index/IndexSymbol.cpp b/clang/lib/Index/IndexSymbol.cpp
index 62e2fac..9f91e62 100644
--- a/clang/lib/Index/IndexSymbol.cpp
+++ b/clang/lib/Index/IndexSymbol.cpp
@@ -30,11 +30,11 @@
     case TTK_Union:
       Info.Kind = SymbolKind::Union; break;
     case TTK_Class:
-      Info.Kind = SymbolKind::CXXClass;
+      Info.Kind = SymbolKind::Class;
       Info.Lang = SymbolLanguage::CXX;
       break;
     case TTK_Interface:
-      Info.Kind = SymbolKind::CXXInterface;
+      Info.Kind = SymbolKind::Protocol;
       Info.Lang = SymbolLanguage::CXX;
       break;
     case TTK_Enum:
@@ -57,7 +57,7 @@
       Info.Kind = SymbolKind::Module;
       break;
     case Decl::Typedef:
-      Info.Kind = SymbolKind::Typedef; break;
+      Info.Kind = SymbolKind::TypeAlias; break; // Lang = C
     case Decl::Function:
       Info.Kind = SymbolKind::Function;
       break;
@@ -67,7 +67,7 @@
     case Decl::Var:
       Info.Kind = SymbolKind::Variable;
       if (isa<CXXRecordDecl>(D->getDeclContext())) {
-        Info.Kind = SymbolKind::CXXStaticVariable;
+        Info.Kind = SymbolKind::StaticProperty;
         Info.Lang = SymbolLanguage::CXX;
       }
       break;
@@ -83,91 +83,94 @@
       Info.Kind = SymbolKind::EnumConstant; break;
     case Decl::ObjCInterface:
     case Decl::ObjCImplementation:
-      Info.Kind = SymbolKind::ObjCClass;
+      Info.Kind = SymbolKind::Class;
       Info.Lang = SymbolLanguage::ObjC;
       break;
     case Decl::ObjCProtocol:
-      Info.Kind = SymbolKind::ObjCProtocol;
+      Info.Kind = SymbolKind::Protocol;
       Info.Lang = SymbolLanguage::ObjC;
       break;
     case Decl::ObjCCategory:
     case Decl::ObjCCategoryImpl:
-      Info.Kind = SymbolKind::ObjCCategory;
+      Info.Kind = SymbolKind::Extension;
       Info.Lang = SymbolLanguage::ObjC;
       break;
     case Decl::ObjCMethod:
       if (cast<ObjCMethodDecl>(D)->isInstanceMethod())
-        Info.Kind = SymbolKind::ObjCInstanceMethod;
+        Info.Kind = SymbolKind::InstanceMethod;
       else
-        Info.Kind = SymbolKind::ObjCClassMethod;
+        Info.Kind = SymbolKind::ClassMethod;
       Info.Lang = SymbolLanguage::ObjC;
       break;
     case Decl::ObjCProperty:
-      Info.Kind = SymbolKind::ObjCProperty;
+      Info.Kind = SymbolKind::InstanceProperty;
       Info.Lang = SymbolLanguage::ObjC;
       break;
     case Decl::ObjCIvar:
-      Info.Kind = SymbolKind::ObjCIvar;
+      Info.Kind = SymbolKind::Field;
       Info.Lang = SymbolLanguage::ObjC;
       break;
     case Decl::Namespace:
-      Info.Kind = SymbolKind::CXXNamespace;
+      Info.Kind = SymbolKind::Namespace;
       Info.Lang = SymbolLanguage::CXX;
       break;
     case Decl::NamespaceAlias:
-      Info.Kind = SymbolKind::CXXNamespaceAlias;
+      Info.Kind = SymbolKind::NamespaceAlias;
       Info.Lang = SymbolLanguage::CXX;
       break;
     case Decl::CXXConstructor:
-      Info.Kind = SymbolKind::CXXConstructor;
+      Info.Kind = SymbolKind::Constructor;
       Info.Lang = SymbolLanguage::CXX;
       break;
     case Decl::CXXDestructor:
-      Info.Kind = SymbolKind::CXXDestructor;
+      Info.Kind = SymbolKind::Destructor;
       Info.Lang = SymbolLanguage::CXX;
       break;
     case Decl::CXXConversion:
-      Info.Kind = SymbolKind::CXXConversionFunction;
+      Info.Kind = SymbolKind::ConversionFunction;
       Info.Lang = SymbolLanguage::CXX;
       break;
     case Decl::CXXMethod: {
       const CXXMethodDecl *MD = cast<CXXMethodDecl>(D);
       if (MD->isStatic())
-        Info.Kind = SymbolKind::CXXStaticMethod;
+        Info.Kind = SymbolKind::StaticMethod;
       else
-        Info.Kind = SymbolKind::CXXInstanceMethod;
+        Info.Kind = SymbolKind::InstanceMethod;
       Info.Lang = SymbolLanguage::CXX;
       break;
     }
     case Decl::ClassTemplate:
-      Info.Kind = SymbolKind::CXXClass;
+      Info.Kind = SymbolKind::Class;
       Info.TemplateKind = SymbolCXXTemplateKind::Template;
+      Info.Lang = SymbolLanguage::CXX;
       break;
     case Decl::FunctionTemplate:
       Info.Kind = SymbolKind::Function;
       Info.TemplateKind = SymbolCXXTemplateKind::Template;
+      Info.Lang = SymbolLanguage::CXX;
       if (const CXXMethodDecl *MD = dyn_cast_or_null<CXXMethodDecl>(
                            cast<FunctionTemplateDecl>(D)->getTemplatedDecl())) {
         if (isa<CXXConstructorDecl>(MD))
-          Info.Kind = SymbolKind::CXXConstructor;
+          Info.Kind = SymbolKind::Constructor;
         else if (isa<CXXDestructorDecl>(MD))
-          Info.Kind = SymbolKind::CXXDestructor;
+          Info.Kind = SymbolKind::Destructor;
         else if (isa<CXXConversionDecl>(MD))
-          Info.Kind = SymbolKind::CXXConversionFunction;
+          Info.Kind = SymbolKind::ConversionFunction;
         else {
           if (MD->isStatic())
-            Info.Kind = SymbolKind::CXXStaticMethod;
+            Info.Kind = SymbolKind::StaticMethod;
           else
-            Info.Kind = SymbolKind::CXXInstanceMethod;
+            Info.Kind = SymbolKind::InstanceMethod;
         }
       }
       break;
     case Decl::TypeAliasTemplate:
-      Info.Kind = SymbolKind::CXXTypeAlias;
+      Info.Kind = SymbolKind::TypeAlias;
+      Info.Lang = SymbolLanguage::CXX;
       Info.TemplateKind = SymbolCXXTemplateKind::Template;
       break;
     case Decl::TypeAlias:
-      Info.Kind = SymbolKind::CXXTypeAlias;
+      Info.Kind = SymbolKind::TypeAlias;
       Info.Lang = SymbolLanguage::CXX;
       break;
     default:
@@ -262,33 +265,29 @@
   switch (K) {
   case SymbolKind::Unknown: return "<unknown>";
   case SymbolKind::Module: return "module";
+  case SymbolKind::Namespace: return "namespace";
+  case SymbolKind::NamespaceAlias: return "namespace-alias";
   case SymbolKind::Macro: return "macro";
   case SymbolKind::Enum: return "enum";
   case SymbolKind::Struct: return "struct";
+  case SymbolKind::Class: return "class";
+  case SymbolKind::Protocol: return "protocol";
+  case SymbolKind::Extension: return "extension";
   case SymbolKind::Union: return "union";
-  case SymbolKind::Typedef: return "typedef";
+  case SymbolKind::TypeAlias: return "type-alias";
   case SymbolKind::Function: return "function";
   case SymbolKind::Variable: return "variable";
   case SymbolKind::Field: return "field";
   case SymbolKind::EnumConstant: return "enumerator";
-  case SymbolKind::ObjCClass: return "objc-class";
-  case SymbolKind::ObjCProtocol: return "objc-protocol";
-  case SymbolKind::ObjCCategory: return "objc-category";
-  case SymbolKind::ObjCInstanceMethod: return "objc-instance-method";
-  case SymbolKind::ObjCClassMethod: return "objc-class-method";
-  case SymbolKind::ObjCProperty: return "objc-property";
-  case SymbolKind::ObjCIvar: return "objc-ivar";
-  case SymbolKind::CXXClass: return "c++-class";
-  case SymbolKind::CXXNamespace: return "namespace";
-  case SymbolKind::CXXNamespaceAlias: return "namespace-alias";
-  case SymbolKind::CXXStaticVariable: return "c++-static-var";
-  case SymbolKind::CXXStaticMethod: return "c++-static-method";
-  case SymbolKind::CXXInstanceMethod: return "c++-instance-method";
-  case SymbolKind::CXXConstructor: return "constructor";
-  case SymbolKind::CXXDestructor: return "destructor";
-  case SymbolKind::CXXConversionFunction: return "coversion-func";
-  case SymbolKind::CXXTypeAlias: return "type-alias";
-  case SymbolKind::CXXInterface: return "c++-__interface";
+  case SymbolKind::InstanceMethod: return "instance-method";
+  case SymbolKind::ClassMethod: return "class-method";
+  case SymbolKind::StaticMethod: return "static-method";
+  case SymbolKind::InstanceProperty: return "instance-property";
+  case SymbolKind::ClassProperty: return "class-property";
+  case SymbolKind::StaticProperty: return "static-property";
+  case SymbolKind::Constructor: return "constructor";
+  case SymbolKind::Destructor: return "destructor";
+  case SymbolKind::ConversionFunction: return "coversion-func";
   }
   llvm_unreachable("invalid symbol kind");
 }