summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorAlex Lorenz <arphaman@gmail.com>2017-01-03 12:07:20 +0000
committerAlex Lorenz <arphaman@gmail.com>2017-01-03 12:07:20 +0000
commit14abc7f0079db6a48db324b54be39f84036bdee5 (patch)
tree3c5d8c0ecf093300f863bd4876015f77376ca527 /clang
parent847fda1419d287843f87fc315fc4919466eca8fb (diff)
downloadbcm5719-llvm-14abc7f0079db6a48db324b54be39f84036bdee5.tar.gz
bcm5719-llvm-14abc7f0079db6a48db324b54be39f84036bdee5.zip
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 llvm-svn: 290880
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Frontend/ASTConsumers.cpp7
-rw-r--r--clang/test/Coverage/cxx-language-features.inc8
2 files changed, 15 insertions, 0 deletions
diff --git a/clang/lib/Frontend/ASTConsumers.cpp b/clang/lib/Frontend/ASTConsumers.cpp
index bd2ee06d165..329f15fbef1 100644
--- a/clang/lib/Frontend/ASTConsumers.cpp
+++ b/clang/lib/Frontend/ASTConsumers.cpp
@@ -478,6 +478,13 @@ void DeclContextPrinter::PrintDeclContext(const DeclContext* DC,
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");
diff --git a/clang/test/Coverage/cxx-language-features.inc b/clang/test/Coverage/cxx-language-features.inc
index 31b50be3358..18e28e0fabc 100644
--- a/clang/test/Coverage/cxx-language-features.inc
+++ b/clang/test/Coverage/cxx-language-features.inc
@@ -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 { };
OpenPOWER on IntegriCloud