aboutsummaryrefslogtreecommitdiff
path: root/lib/AST/DeclPrinter.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2012-12-21 21:43:05 +0000
committerFariborz Jahanian <fjahanian@apple.com>2012-12-21 21:43:05 +0000
commitd4ae6535a667d515afc0af3e67ca287548aba985 (patch)
tree981992a037ab3a61405301227049650dd14ac629 /lib/AST/DeclPrinter.cpp
parentccbb4027d9fec8247b7af08f9134515da8e470a4 (diff)
Fixes couple of friend declaration -ast-print bug
found by running -ast-print on all-std-headers.cpp which caused it to go into infinite loop. Now -ast-print prints all declarations found in all-std-headers.cpp. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170928 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/DeclPrinter.cpp')
-rw-r--r--lib/AST/DeclPrinter.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/lib/AST/DeclPrinter.cpp b/lib/AST/DeclPrinter.cpp
index 4a7344c982..b4005221f4 100644
--- a/lib/AST/DeclPrinter.cpp
+++ b/lib/AST/DeclPrinter.cpp
@@ -580,10 +580,8 @@ void DeclPrinter::VisitFunctionDecl(FunctionDecl *D) {
void DeclPrinter::VisitFriendDecl(FriendDecl *D) {
if (TypeSourceInfo *TSI = D->getFriendType()) {
- if (CXXRecordDecl *FriendD = TSI->getType()->getAsCXXRecordDecl()) {
- Out << "friend ";
- VisitCXXRecordDecl(FriendD);
- }
+ Out << "friend ";
+ Out << " " << TSI->getType().getAsString(Policy);
}
else if (FunctionDecl *FD =
dyn_cast<FunctionDecl>(D->getFriendDecl())) {
@@ -598,7 +596,7 @@ void DeclPrinter::VisitFriendDecl(FriendDecl *D) {
else if (ClassTemplateDecl *CTD =
dyn_cast<ClassTemplateDecl>(D->getFriendDecl())) {
Out << "friend ";
- VisitClassTemplateDecl(CTD);
+ VisitRedeclarableTemplateDecl(CTD);
}
}