diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2018-04-25 22:58:55 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2018-04-25 22:58:55 +0000 |
commit | 0bf96f933a0cae717d8311785db8485aeacabf1b (patch) | |
tree | c03e4749e0a422b653d8de3e8f091b9967b99548 /clang/lib/Sema/SemaTemplate.cpp | |
parent | c85505450ab6ad33a133516291bc268c0f09b572 (diff) | |
download | bcm5719-llvm-0bf96f933a0cae717d8311785db8485aeacabf1b.tar.gz bcm5719-llvm-0bf96f933a0cae717d8311785db8485aeacabf1b.zip |
Fix crash on qualified template name instantiation if the template name has no
template argument list.
llvm-svn: 330881
Diffstat (limited to 'clang/lib/Sema/SemaTemplate.cpp')
-rw-r--r-- | clang/lib/Sema/SemaTemplate.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index fbc65835d99..f3cb04ac6a9 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -4022,18 +4022,21 @@ ExprResult Sema::BuildTemplateIdExpr(const CXXScopeSpec &SS, assert(!R.empty() && "empty lookup results when building templateid"); assert(!R.isAmbiguous() && "ambiguous lookup when building templateid"); + auto AnyDependentArguments = [&]() -> bool { + bool InstantiationDependent; + return TemplateArgs && + TemplateSpecializationType::anyDependentTemplateArguments( + *TemplateArgs, InstantiationDependent); + }; + // In C++1y, check variable template ids. - bool InstantiationDependent; - const bool DependentArguments = - TemplateSpecializationType::anyDependentTemplateArguments( - *TemplateArgs, InstantiationDependent); - if (R.getAsSingle<VarTemplateDecl>() && !DependentArguments) { + if (R.getAsSingle<VarTemplateDecl>() && !AnyDependentArguments()) { return CheckVarTemplateId(SS, R.getLookupNameInfo(), R.getAsSingle<VarTemplateDecl>(), TemplateKWLoc, TemplateArgs); } - if (R.getAsSingle<ConceptDecl>() && !DependentArguments) { + if (R.getAsSingle<ConceptDecl>() && !AnyDependentArguments()) { return CheckConceptTemplateId(SS, R.getLookupNameInfo(), R.getAsSingle<ConceptDecl>(), TemplateKWLoc, TemplateArgs); |