From e45ab6d7ae356c3a901208313a3545612b3804ef Mon Sep 17 00:00:00 2001 From: Axel Naumann Date: Fri, 19 Sep 2014 16:54:23 +0200 Subject: [PATCH] Skip if needed when visiting template args. --- .../cling/lib/Interpreter/ForwardDeclPrinter.cpp | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/interpreter/cling/lib/Interpreter/ForwardDeclPrinter.cpp b/interpreter/cling/lib/Interpreter/ForwardDeclPrinter.cpp index e2a5701..6edc818 100644 --- a/interpreter/cling/lib/Interpreter/ForwardDeclPrinter.cpp +++ b/interpreter/cling/lib/Interpreter/ForwardDeclPrinter.cpp @@ -867,6 +867,10 @@ namespace cling { StreamRAII Stream(*this); PrintTemplateParameters(D->getTemplateParameters()); + if (m_SkipFlag) { + skipCurrentDecl(true); + return; + } if (const TemplateTemplateParmDecl *TTP = dyn_cast(D)) { @@ -886,12 +890,24 @@ namespace cling { void ForwardDeclPrinter::VisitFunctionTemplateDecl(FunctionTemplateDecl *D) { if (m_PrintInstantiation) { + StreamRAII stream(*this); TemplateParameterList *Params = D->getTemplateParameters(); for (FunctionTemplateDecl::spec_iterator I = D->spec_begin(), E = D->spec_end(); I != E; ++I) { PrintTemplateParameters(Params, (*I)->getTemplateSpecializationArgs()); + if (m_SkipFlag) { + skipCurrentDecl(true); + return; + } + Visit(*I); } + if (m_SkipFlag) { + skipCurrentDecl(true); + return; + } + std::string output = stream.take(true); + Out() << output; } return VisitRedeclarableTemplateDecl(D); @@ -900,11 +916,22 @@ namespace cling { void ForwardDeclPrinter::VisitClassTemplateDecl(ClassTemplateDecl *D) { if (m_PrintInstantiation) { + StreamRAII stream(*this); TemplateParameterList *Params = D->getTemplateParameters(); for (ClassTemplateDecl::spec_iterator I = D->spec_begin(), E = D->spec_end(); I != E; ++I) { PrintTemplateParameters(Params, &(*I)->getTemplateArgs()); + if (m_SkipFlag) { + skipCurrentDecl(true); + return; + } Visit(*I); + if (m_SkipFlag) { + skipCurrentDecl(true); + return; + } + std::string output = stream.take(true); + Out() << output; Out() << '\n'; } } -- 1.8.2