SemaTemplate.cpp: Rework r206451. Removing an argument was really bad idea.

llvm-svn: 206452
This commit is contained in:
NAKAMURA Takumi 2014-04-17 08:57:09 +00:00
parent 518210e264
commit de4077a5d3
1 changed files with 5 additions and 4 deletions

View File

@ -1722,8 +1722,7 @@ TemplateParameterList *Sema::MatchTemplateParametersToScopeSpecifier(
// explicitly specialized.
bool SawNonEmptyTemplateParameterList = false;
auto CheckExplicitSpecialization = [&](SourceRange Range) {
bool Recovery = false;
auto CheckExplicitSpecialization = [&](SourceRange Range, bool Recovery) {
if (SawNonEmptyTemplateParameterList) {
Diag(DeclLoc, diag::err_specialize_member_of_template)
<< !Recovery << Range;
@ -1823,7 +1822,8 @@ TemplateParameterList *Sema::MatchTemplateParametersToScopeSpecifier(
// are not explicitly specialized as well.
if (ParamIdx < ParamLists.size()) {
if (ParamLists[ParamIdx]->size() == 0) {
if (CheckExplicitSpecialization(ParamLists[ParamIdx]->getSourceRange()))
if (CheckExplicitSpecialization(ParamLists[ParamIdx]->getSourceRange(),
false))
return 0;
} else
SawNonEmptyTemplateParameterList = true;
@ -1959,7 +1959,8 @@ TemplateParameterList *Sema::MatchTemplateParametersToScopeSpecifier(
// specialize a class member template if its en- closing class templates
// are not explicitly specialized as well.
if (ParamLists.back()->size() == 0 &&
CheckExplicitSpecialization(ParamLists[ParamIdx]->getSourceRange()))
CheckExplicitSpecialization(ParamLists[ParamIdx]->getSourceRange(),
false))
return 0;
// Return the last template parameter list, which corresponds to the