summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaTemplate.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-07-11 05:59:24 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-07-11 05:59:24 +0000
commitf580dd98cba2aeda6c59d69f30bd56bc7cc4b41b (patch)
tree3cef2a17aa61161355ccf7c6065355f6ed6089c7 /clang/lib/Sema/SemaTemplate.cpp
parent7ee070e7bcd0f518bc309bc7953c08937ce1c704 (diff)
downloadbcm5719-llvm-f580dd98cba2aeda6c59d69f30bd56bc7cc4b41b.tar.gz
bcm5719-llvm-f580dd98cba2aeda6c59d69f30bd56bc7cc4b41b.zip
[Sema] Disallow __make_integer_seq from showing up in __make_integer_seq
We hit over stringent asserts when trying to diagnose. Loosen them as appropriate. This fixes PR28494. llvm-svn: 275047
Diffstat (limited to 'clang/lib/Sema/SemaTemplate.cpp')
-rw-r--r--clang/lib/Sema/SemaTemplate.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp
index 862447b7d5c..c1b6b5e45ae 100644
--- a/clang/lib/Sema/SemaTemplate.cpp
+++ b/clang/lib/Sema/SemaTemplate.cpp
@@ -5378,11 +5378,13 @@ bool Sema::CheckTemplateArgument(TemplateTemplateParmDecl *Param,
if (!isa<ClassTemplateDecl>(Template) &&
!isa<TemplateTemplateParmDecl>(Template) &&
!isa<TypeAliasTemplateDecl>(Template)) {
- assert(isa<FunctionTemplateDecl>(Template) &&
- "Only function templates are possible here");
+ assert((isa<FunctionTemplateDecl>(Template) ||
+ isa<BuiltinTemplateDecl>(Template)) &&
+ "Only function or builtin templates are possible here");
Diag(Arg.getLocation(), diag::err_template_arg_not_valid_template);
- Diag(Template->getLocation(), diag::note_template_arg_refers_here_func)
- << Template;
+ if (isa<FunctionTemplateDecl>(Template))
+ Diag(Template->getLocation(), diag::note_template_arg_refers_here_func)
+ << Template;
}
TemplateParameterList *Params = Param->getTemplateParameters();
OpenPOWER on IntegriCloud