Make linkage-specifications hold on to all of their declarations
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61110 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Driver/ASTConsumers.cpp b/Driver/ASTConsumers.cpp
index cc41642..4ff8d3c 100644
--- a/Driver/ASTConsumers.cpp
+++ b/Driver/ASTConsumers.cpp
@@ -185,9 +185,19 @@
"unknown language in linkage specification");
l = "C++";
}
- Out << "extern \"" << l << "\" { ";
- PrintDecl(LS->getDecl());
- Out << "}\n";
+
+ Out << "extern \"" << l << "\" ";
+ if (LS->hasBraces())
+ Out << "{\n";
+
+ for (LinkageSpecDecl::decl_const_iterator D = LS->decls_begin(),
+ DEnd = LS->decls_end();
+ D != DEnd; ++D)
+ PrintDecl(*D);
+
+ if (LS->hasBraces())
+ Out << "}";
+ Out << "\n";
}
void DeclPrinter::PrintObjCMethodDecl(ObjCMethodDecl *OMD) {