Author: arphaman Date: Tue Jan 3 06:07:20 2017 New Revision: 290880 URL: http://llvm.org/viewvc/llvm-project?rev=290880&view=rev Log: Handle FriendDecl in DeclContextPrinter
This commit fixes a crash that occurs when -print-decl-contexts AST consumer tries to print an unhandled declaration. rdar://19467234 Differential Revision: https://reviews.llvm.org/D26964 Modified: cfe/trunk/lib/Frontend/ASTConsumers.cpp cfe/trunk/test/Coverage/cxx-language-features.inc Modified: cfe/trunk/lib/Frontend/ASTConsumers.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ASTConsumers.cpp?rev=290880&r1=290879&r2=290880&view=diff ============================================================================== --- cfe/trunk/lib/Frontend/ASTConsumers.cpp (original) +++ cfe/trunk/lib/Frontend/ASTConsumers.cpp Tue Jan 3 06:07:20 2017 @@ -478,6 +478,13 @@ void DeclContextPrinter::PrintDeclContex Out << "<omp threadprivate> " << '"' << I << "\"\n"; break; } + case Decl::Friend: { + Out << "<friend>"; + if (const NamedDecl *ND = cast<FriendDecl>(I)->getFriendDecl()) + Out << ' ' << *ND; + Out << "\n"; + break; + } default: Out << "DeclKind: " << DK << '"' << I << "\"\n"; llvm_unreachable("decl unhandled"); Modified: cfe/trunk/test/Coverage/cxx-language-features.inc URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Coverage/cxx-language-features.inc?rev=290880&r1=290879&r2=290880&view=diff ============================================================================== --- cfe/trunk/test/Coverage/cxx-language-features.inc (original) +++ cfe/trunk/test/Coverage/cxx-language-features.inc Tue Jan 3 06:07:20 2017 @@ -25,3 +25,11 @@ enum E1 { EC1 }; template <E1 v> class C1 {}; template <E1 v> C1<v> f1() { return C1<v>(); } void f2() { f1<EC1>(); } + +// Friend declarations +struct FriendlyStruct { + friend bool operator==(FriendlyStruct, FriendlyStruct) { return true; } + friend struct FriendedStruct; +}; + +struct FriendedStruct { }; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits