-Changes to TagDecl:
  Added TagKind enum.
  Added getTagKind() method.
  Added convenience methods: isEnum(), isStruct(), isUnion(), isClass().
-RecordDecl/CXXRecordDecl::Create() accept a TagKind enum instead of a DeclKind one.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52160 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/DeclCXX.cpp b/lib/AST/DeclCXX.cpp
index c319191..b62ca58 100644
--- a/lib/AST/DeclCXX.cpp
+++ b/lib/AST/DeclCXX.cpp
@@ -26,9 +26,16 @@
   return new (Mem) CXXFieldDecl(RD, L, Id, T, BW);

 }

 

-CXXRecordDecl *CXXRecordDecl::Create(ASTContext &C, Kind DK, DeclContext *DC,

+CXXRecordDecl *CXXRecordDecl::Create(ASTContext &C, TagKind TK, DeclContext *DC,

                                      SourceLocation L, IdentifierInfo *Id,

                                      ScopedDecl *PrevDecl) {

+  Kind DK;

+  switch (TK) {

+  case TK_enum:   assert(0 && "Enum TagKind passed for Record!");

+  case TK_struct: DK = Struct; break;

+  case TK_union:  DK = Union;  break;

+  case TK_class:  DK = Class;  break;

+  }

   void *Mem = C.getAllocator().Allocate<CXXRecordDecl>();

   return new (Mem) CXXRecordDecl(DK, DC, L, Id, PrevDecl);

 }