forked from OSchip/llvm-project
Fix a crasher than manifests when typo correction suggests a function template.
llvm-svn: 187467
This commit is contained in:
parent
7f8042c8f3
commit
2ac682a671
|
@ -3932,7 +3932,7 @@ Sema::ConvertArgumentsForCall(CallExpr *Call, Expr *Fn,
|
|||
<< Fn->getSourceRange() << CorrectedQuotedStr
|
||||
<< FixItHint::CreateReplacement(TC.getCorrectionRange(),
|
||||
CorrectedStr);
|
||||
Diag(TC.getCorrectionDeclAs<FunctionDecl>()->getLocStart(),
|
||||
Diag(TC.getCorrectionDecl()->getLocStart(),
|
||||
diag::note_previous_decl) << CorrectedQuotedStr;
|
||||
} else if (MinArgs == 1 && FDecl && FDecl->getParamDecl(0)->getDeclName())
|
||||
Diag(RParenLoc, MinArgs == NumArgsInProto && !Proto->isVariadic()
|
||||
|
@ -3978,7 +3978,7 @@ Sema::ConvertArgumentsForCall(CallExpr *Call, Expr *Fn,
|
|||
<< Fn->getSourceRange() << CorrectedQuotedStr
|
||||
<< FixItHint::CreateReplacement(TC.getCorrectionRange(),
|
||||
CorrectedStr);
|
||||
Diag(TC.getCorrectionDeclAs<FunctionDecl>()->getLocStart(),
|
||||
Diag(TC.getCorrectionDecl()->getLocStart(),
|
||||
diag::note_previous_decl) << CorrectedQuotedStr;
|
||||
} else if (NumArgsInProto == 1 && FDecl && FDecl->getParamDecl(0)->getDeclName())
|
||||
Diag(Args[NumArgsInProto]->getLocStart(),
|
||||
|
|
|
@ -14,3 +14,22 @@ void zif::nab(int) {
|
|||
nab(); // expected-error{{too few arguments to function call, expected 1, have 0; did you mean '::PR12287::nab'?}}
|
||||
}
|
||||
}
|
||||
|
||||
namespace TemplateFunction {
|
||||
template <class T> // expected-note {{'::TemplateFunction::A' declared here}}
|
||||
void A(T) { }
|
||||
|
||||
template <class T> // expected-note {{'::TemplateFunction::B' declared here}}
|
||||
void B(T) { }
|
||||
|
||||
class Foo {
|
||||
public:
|
||||
void A(int, int) {}
|
||||
void B() {}
|
||||
};
|
||||
|
||||
void test(Foo F, int num) {
|
||||
F.A(num); // expected-error {{too few arguments to function call, expected 2, have 1; did you mean '::TemplateFunction::A'?}}
|
||||
F.B(num); // expected-error {{too many arguments to function call, expected 0, have 1; did you mean '::TemplateFunction::B'?}}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue