From: Axel Naumann Date: Tue, 23 Sep 2014 18:48:42 +0000 (+0200) Subject: Declare outermost namespace first. X-Git-Tag: v6-02-00-rc1~18 X-Git-Url: https://root.cern.ch/gitweb?p=root.git;a=commitdiff_plain;h=c837d262a3732e0244fe5bb7fd5adca246870204 Declare outermost namespace first. --- diff --git a/interpreter/cling/lib/Interpreter/ForwardDeclPrinter.cpp b/interpreter/cling/lib/Interpreter/ForwardDeclPrinter.cpp index 4e15f0a..ca4dc4a 100644 --- a/interpreter/cling/lib/Interpreter/ForwardDeclPrinter.cpp +++ b/interpreter/cling/lib/Interpreter/ForwardDeclPrinter.cpp @@ -1263,20 +1263,22 @@ namespace cling { std::string ForwardDeclPrinter::PrintEnclosingDeclContexts(llvm::raw_ostream& Stream, const DeclContext* DC) { // Return closing "} } } }"... - size_t numClose = 0; + SmallVector DeclCtxs; for(; DC && !DC->isTranslationUnit(); DC = DC->getParent()) { - if (const NamespaceDecl* ND = dyn_cast(DC)) { - PrintNamespaceOpen(Stream, ND); - ++numClose; - } else if (const LinkageSpecDecl* LSD = dyn_cast(DC)) { - PrintLinkageOpen(Stream, LSD); - ++numClose; - } else { + if (!isa(DC) && !isa(DC)) { Log() << "Skipping unhandled " << DC->getDeclKindName() << '\n'; skipDecl(0, 0); return ""; } + DeclCtxs.push_back(DC); + } + + for (auto I = DeclCtxs.rbegin(), E = DeclCtxs.rend(); I != E; ++I) { + if (const NamespaceDecl* ND = dyn_cast(*I)) + PrintNamespaceOpen(Stream, ND); + else if (const LinkageSpecDecl* LSD = dyn_cast(*I)) + PrintLinkageOpen(Stream, LSD); } - return std::string(numClose, '}'); + return std::string(DeclCtxs.size(), '}'); } }//end namespace cling