diff options
-rw-r--r-- | clang/lib/AST/Type.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/clang/lib/AST/Type.cpp b/clang/lib/AST/Type.cpp index 412b0cf8341..f9cf847ee9e 100644 --- a/clang/lib/AST/Type.cpp +++ b/clang/lib/AST/Type.cpp @@ -1388,8 +1388,15 @@ void TagType::getAsStringInternal(std::string &InnerString) const { const char *ID; if (const IdentifierInfo *II = getDecl()->getIdentifier()) ID = II->getName(); - else + else if (TypedefDecl *Typedef = getDecl()->getTypedefForAnonDecl()) { + Kind = 0; + assert(Typedef->getIdentifier() && "Typedef without identifier?"); + ID = Typedef->getIdentifier()->getName(); + } else ID = "<anonymous>"; - InnerString = std::string(Kind) + " " + ID + InnerString; + if (Kind) + InnerString = std::string(Kind) + " " + ID + InnerString; + else + InnerString = ID + InnerString; } |