Deleted Added
full compact
3358c3358
< /// \param Arg The template argument.
---
> /// \param Arg The template argument, which may be updated due to conversions.
3435a3436,3442
> // If the resulting expression is new, then use it in place of the
> // old expression in the template argument.
> if (Res.get() != Arg.getArgument().getAsExpr()) {
> TemplateArgument TA(Res.get());
> Arg = TemplateArgumentLoc(TA, Res.get());
> }
>
3642a3650,3654
> // Make a copy of the template arguments for processing. Only make the
> // changes at the end when successful in matching the arguments to the
> // template.
> TemplateArgumentListInfo NewArgs = TemplateArgs;
>
3645c3657
< SourceLocation RAngleLoc = TemplateArgs.getRAngleLoc();
---
> SourceLocation RAngleLoc = NewArgs.getRAngleLoc();
3654c3666
< unsigned ArgIdx = 0, NumArgs = TemplateArgs.size();
---
> unsigned ArgIdx = 0, NumArgs = NewArgs.size();
3690c3702
< if (CheckTemplateArgument(*Param, TemplateArgs[ArgIdx], Template,
---
> if (CheckTemplateArgument(*Param, NewArgs[ArgIdx], Template,
3696c3708
< TemplateArgs[ArgIdx].getArgument().isPackExpansion() &&
---
> NewArgs[ArgIdx].getArgument().isPackExpansion() &&
3702c3714
< Diag(TemplateArgs[ArgIdx].getLocation(),
---
> Diag(NewArgs[ArgIdx].getLocation(),
3704c3716
< << TemplateArgs[ArgIdx].getSourceRange();
---
> << NewArgs[ArgIdx].getSourceRange();
3736c3748
< Converted.push_back(TemplateArgs[ArgIdx].getArgument());
---
> Converted.push_back(NewArgs[ArgIdx].getArgument());
3787,3788c3799
< return diagnoseArityMismatch(*this, Template, TemplateLoc,
< TemplateArgs);
---
> return diagnoseArityMismatch(*this, Template, TemplateLoc, NewArgs);
3804,3805c3815
< return diagnoseArityMismatch(*this, Template, TemplateLoc,
< TemplateArgs);
---
> return diagnoseArityMismatch(*this, Template, TemplateLoc, NewArgs);
3822,3823c3832
< return diagnoseArityMismatch(*this, Template, TemplateLoc,
< TemplateArgs);
---
> return diagnoseArityMismatch(*this, Template, TemplateLoc, NewArgs);
3851,3852c3860,3861
< // Core issue 150 (assumed resolution): if this is a template template
< // parameter, keep track of the default template arguments from the
---
> // Core issue 150 (assumed resolution): if this is a template template
> // parameter, keep track of the default template arguments from the
3855,3856c3864,3865
< TemplateArgs.addArgument(Arg);
<
---
> NewArgs.addArgument(Arg);
>
3868,3870c3877,3878
< while (ArgIdx < NumArgs &&
< TemplateArgs[ArgIdx].getArgument().isPackExpansion())
< Converted.push_back(TemplateArgs[ArgIdx++].getArgument());
---
> while (ArgIdx < NumArgs && NewArgs[ArgIdx].getArgument().isPackExpansion())
> Converted.push_back(NewArgs[ArgIdx++].getArgument());
3876c3884
< return diagnoseArityMismatch(*this, Template, TemplateLoc, TemplateArgs);
---
> return diagnoseArityMismatch(*this, Template, TemplateLoc, NewArgs);
3877a3886,3889
> // No problems found with the new argument list, propagate changes back
> // to caller.
> TemplateArgs = NewArgs;
>