Improved MSVC __interface support by adding first class support for it, instead of aliasing to "struct" which had some incorrect behaviour. Patch by David Robins.

llvm-svn: 163013
diff --git a/clang/tools/libclang/CIndexCXX.cpp b/clang/tools/libclang/CIndexCXX.cpp
index 240b0f6..1747949 100644
--- a/clang/tools/libclang/CIndexCXX.cpp
+++ b/clang/tools/libclang/CIndexCXX.cpp
@@ -64,14 +64,15 @@
       
   case CXCursor_ClassTemplatePartialSpecialization:
     if (ClassTemplateSpecializationDecl *PartialSpec
-          = dyn_cast_or_null<ClassTemplatePartialSpecializationDecl>(
-                                                            getCursorDecl(C))) {
-      switch (PartialSpec->getTagKind()) {
-      case TTK_Class: return CXCursor_ClassDecl;
-      case TTK_Struct: return CXCursor_StructDecl;
-      case TTK_Union: return CXCursor_UnionDecl;
-      case TTK_Enum: return CXCursor_NoDeclFound;
-      }
+          = dyn_cast_or_null<ClassTemplatePartialSpecializationDecl>(

+                                                            getCursorDecl(C))) {

+      switch (PartialSpec->getTagKind()) {

+      case TTK_Interface:

+      case TTK_Struct: return CXCursor_StructDecl;

+      case TTK_Class: return CXCursor_ClassDecl;

+      case TTK_Union: return CXCursor_UnionDecl;

+      case TTK_Enum: return CXCursor_NoDeclFound;

+      }

     }
     break;