r290880 - Handle FriendDecl in DeclContextPrinter
Alex Lorenz via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 3 04:07:21 PST 2017
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 { };
More information about the cfe-commits
mailing list