summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaTemplate.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2018-04-25 22:58:55 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2018-04-25 22:58:55 +0000
commit0bf96f933a0cae717d8311785db8485aeacabf1b (patch)
treec03e4749e0a422b653d8de3e8f091b9967b99548 /clang/lib/Sema/SemaTemplate.cpp
parentc85505450ab6ad33a133516291bc268c0f09b572 (diff)
downloadbcm5719-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.cpp15
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);
OpenPOWER on IntegriCloud