Fix a bug in the typo correction replacement location.
I noticed the wrong text was being replaced with the correction while working on expanding the "namespace-aware" typo correction to include classes. llvm-svn: 191450
This commit is contained in:
parent
95995be7a3
commit
deedc3a6bd
|
@ -3978,10 +3978,12 @@ Sema::ConvertArgumentsForCall(CallExpr *Call, Expr *Fn,
|
|||
// arguments for the remaining parameters), don't make the call.
|
||||
if (Args.size() < NumArgsInProto) {
|
||||
if (Args.size() < MinArgs) {
|
||||
MemberExpr *ME = dyn_cast<MemberExpr>(Fn);
|
||||
TypoCorrection TC;
|
||||
if (FDecl && (TC = TryTypoCorrectionForCall(
|
||||
*this, DeclarationNameInfo(FDecl->getDeclName(),
|
||||
Fn->getLocStart()),
|
||||
(ME ? ME->getMemberLoc()
|
||||
: Fn->getLocStart())),
|
||||
Args))) {
|
||||
unsigned diag_id =
|
||||
MinArgs == NumArgsInProto && !Proto->isVariadic()
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
||||
// RUN: cp %s %t
|
||||
// RUN: not %clang_cc1 -fsyntax-only -fixit -x c++ %t
|
||||
// RUN: %clang_cc1 -fsyntax-only -pedantic -Werror -x c++ %t
|
||||
|
||||
namespace dcl_fct_default_p10 {
|
||||
struct A {
|
||||
virtual void f(int a = 7); // expected-note{{'A::f' declared here}}
|
||||
};
|
||||
|
||||
struct B : public A {
|
||||
void f(int a);
|
||||
};
|
||||
|
||||
void m() {
|
||||
B* pb = new B;
|
||||
A* pa = pb;
|
||||
pa->f(); // OK, calls pa->B::f(7)
|
||||
pb->f(); // expected-error{{too few arguments to function call, expected 1, have 0; did you mean 'A::f'?}}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue