diff options
Diffstat (limited to 'clang/lib/Parse/ParseTemplate.cpp')
-rw-r--r-- | clang/lib/Parse/ParseTemplate.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Parse/ParseTemplate.cpp b/clang/lib/Parse/ParseTemplate.cpp index 076edb93fa1..8275922a6e3 100644 --- a/clang/lib/Parse/ParseTemplate.cpp +++ b/clang/lib/Parse/ParseTemplate.cpp @@ -1304,9 +1304,11 @@ void Parser::ParseLateTemplatedFuncDef(LateParsedTemplate &LPT) { new ParseScope(this, Scope::TemplateParamScope)); DeclaratorDecl *Declarator = dyn_cast<DeclaratorDecl>(FunD); - if (Declarator && Declarator->getNumTemplateParameterLists() != 0) { + const unsigned DeclaratorNumTemplateParameterLists = + (Declarator ? Declarator->getNumTemplateParameterLists() : 0); + if (Declarator && DeclaratorNumTemplateParameterLists != 0) { Actions.ActOnReenterDeclaratorTemplateScope(getCurScope(), Declarator); - ++CurTemplateDepthTracker; + CurTemplateDepthTracker.addDepth(DeclaratorNumTemplateParameterLists); } Actions.ActOnReenterTemplateScope(getCurScope(), LPT.D); ++CurTemplateDepthTracker; |