Add a special note for overload resolution when an initializer list argument
cannot be converted. This is in preparation for overload resolution of initializer lists. Currently, you will always get this message when you try to pass an init list to an overloaded function. llvm-svn: 140461
This commit is contained in:
parent
a74948d347
commit
a72462cdf4
|
@ -1733,6 +1733,16 @@ def note_ovl_candidate_bad_conv_incomplete : Note<"candidate "
|
|||
"function (the implicit move assignment operator)|"
|
||||
"constructor (inherited)}0%1 "
|
||||
"not viable: cannot convert argument of incomplete type %2 to %3">;
|
||||
def note_ovl_candidate_bad_list_argument : Note<"candidate "
|
||||
"%select{function|function|constructor|"
|
||||
"function |function |constructor |"
|
||||
"constructor (the implicit default constructor)|"
|
||||
"constructor (the implicit copy constructor)|"
|
||||
"constructor (the implicit move constructor)|"
|
||||
"function (the implicit copy assignment operator)|"
|
||||
"function (the implicit move assignment operator)|"
|
||||
"constructor (inherited)}0%1 "
|
||||
"not viable: cannot convert initializer list argument to %3">;
|
||||
def note_ovl_candidate_bad_overload : Note<"candidate "
|
||||
"%select{function|function|constructor|"
|
||||
"function |function |constructor |"
|
||||
|
|
|
@ -6915,6 +6915,17 @@ void DiagnoseBadConversion(Sema &S, OverloadCandidate *Cand, unsigned I) {
|
|||
return;
|
||||
}
|
||||
|
||||
// Special diagnostic for failure to convert an initializer list, since
|
||||
// telling the user that it has type void is not useful.
|
||||
if (FromExpr && isa<InitListExpr>(FromExpr)) {
|
||||
S.Diag(Fn->getLocation(), diag::note_ovl_candidate_bad_list_argument)
|
||||
<< (unsigned) FnKind << FnDesc
|
||||
<< (FromExpr ? FromExpr->getSourceRange() : SourceRange())
|
||||
<< FromTy << ToTy << (unsigned) isObjectArgument << I+1;
|
||||
MaybeEmitInheritedConstructorNote(S, Fn);
|
||||
return;
|
||||
}
|
||||
|
||||
// Diagnose references or pointers to incomplete types differently,
|
||||
// since it's far from impossible that the incompleteness triggered
|
||||
// the failure.
|
||||
|
|
Loading…
Reference in New Issue