Allocate expresssions through ASTContext (still more work to do).
Add debug hook to DeclContext.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62605 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/DeclBase.cpp b/lib/AST/DeclBase.cpp
index 5ad7c26..016f7b1 100644
--- a/lib/AST/DeclBase.cpp
+++ b/lib/AST/DeclBase.cpp
@@ -92,6 +92,35 @@
   }
 }
 
+const char *DeclContext::getDeclKindName() const {
+  switch (DeclKind) {
+  default: assert(0 && "Unknown decl kind!");
+  case Decl::TranslationUnit:     return "TranslationUnit";
+  case Decl::Namespace:           return "Namespace";
+  case Decl::OverloadedFunction:  return "OverloadedFunction";
+  case Decl::Typedef:             return "Typedef";
+  case Decl::Function:            return "Function";
+  case Decl::Var:                 return "Var";
+  case Decl::ParmVar:             return "ParmVar";
+  case Decl::OriginalParmVar:     return "OriginalParmVar";
+  case Decl::EnumConstant:        return "EnumConstant";
+  case Decl::ObjCIvar:            return "ObjCIvar";
+  case Decl::ObjCInterface:       return "ObjCInterface";
+  case Decl::ObjCImplementation:  return "ObjCImplementation";
+  case Decl::ObjCClass:           return "ObjCClass";
+  case Decl::ObjCMethod:          return "ObjCMethod";
+  case Decl::ObjCProtocol:        return "ObjCProtocol";
+  case Decl::ObjCProperty:        return "ObjCProperty";
+  case Decl::ObjCPropertyImpl:    return "ObjCPropertyImpl";
+  case Decl::ObjCForwardProtocol: return "ObjCForwardProtocol"; 
+  case Decl::Record:              return "Record";
+  case Decl::CXXRecord:           return "CXXRecord";
+  case Decl::Enum:                return "Enum";
+  case Decl::Block:               return "Block";
+  case Decl::Field:               return "Field";
+  }
+}
+
 bool Decl::CollectingStats(bool Enable) {
   if (Enable)
     StatSwitch = true;