From: Kaelyn Uhrain Date: Mon, 19 Nov 2012 18:49:53 +0000 (+0000) Subject: When adding a NamedDecl to a correction, add the underlying Decl (via X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=728948fba8ce2249db0a6fd228d883f38434289a;p=clang When adding a NamedDecl to a correction, add the underlying Decl (via getUnderlyingDecl()) so that derivatives of CorrectionCandidateCallback::ValidateCandidate(...) don't have to worry about being thrown by UsingDecls and such. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168317 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaLookup.cpp b/lib/Sema/SemaLookup.cpp index f6987e7bfb..f257a499d4 100644 --- a/lib/Sema/SemaLookup.cpp +++ b/lib/Sema/SemaLookup.cpp @@ -4094,7 +4094,7 @@ void TypoCorrection::addCorrectionDecl(NamedDecl *CDecl) { if (isKeyword()) CorrectionDecls.clear(); - CorrectionDecls.push_back(CDecl); + CorrectionDecls.push_back(CDecl->getUnderlyingDecl()); if (!CorrectionName) CorrectionName = CDecl->getDeclName(); diff --git a/test/SemaCXX/typo-correction.cpp b/test/SemaCXX/typo-correction.cpp index c21ef51a7d..4a3f0f6b29 100644 --- a/test/SemaCXX/typo-correction.cpp +++ b/test/SemaCXX/typo-correction.cpp @@ -236,3 +236,17 @@ void test() { return status; // expected-error-re{{use of undeclared identifier 'status'$}} } } + +namespace PR13387 { +struct A { + void CreateFoo(float, float); // expected-note {{'CreateFoo' declared here}} + void CreateBar(float, float); +}; +struct B : A { + using A::CreateFoo; + void CreateFoo(int, int); +}; +void f(B &x) { + x.Createfoo(0,0); // expected-error {{no member named 'Createfoo' in 'PR13387::B'; did you mean 'CreateFoo'?}} +} +}