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:
Kaelyn Uhrain 2013-09-26 19:10:34 +00:00
parent 95995be7a3
commit deedc3a6bd
2 changed files with 24 additions and 1 deletions

View File

@ -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()

View File

@ -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'?}}
}
}