diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-07-11 05:59:24 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-07-11 05:59:24 +0000 |
commit | f580dd98cba2aeda6c59d69f30bd56bc7cc4b41b (patch) | |
tree | 3cef2a17aa61161355ccf7c6065355f6ed6089c7 /clang/lib/Sema/SemaTemplate.cpp | |
parent | 7ee070e7bcd0f518bc309bc7953c08937ce1c704 (diff) | |
download | bcm5719-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.cpp | 10 |
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(); |