When diagnosing an invalid out-of-line redeclaration, don't permit
typo correction to introduce a nested-name-specifier; we aren't
prepared to handle it here. Fixes PR12297 / <rdar://problem/11075219>.
llvm-svn: 153445
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index e92b3e4..d4159bf 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -4478,7 +4478,14 @@
class DifferentNameValidatorCCC : public CorrectionCandidateCallback {
public:
DifferentNameValidatorCCC(CXXRecordDecl *Parent)
- : ExpectedParent(Parent ? Parent->getCanonicalDecl() : 0) {}
+ : ExpectedParent(Parent ? Parent->getCanonicalDecl() : 0) {
+ // Don't allow any additional qualification.
+ // FIXME: It would be nice to perform this additional qualification.
+ // However, DiagnoseInvalidRedeclaration is unable to handle the
+ // qualification, because it doesn't know how to pass the corrected
+ // nested-name-specifier through to ActOnFunctionDeclarator.
+ AllowAddedQualifier = false;
+ }
virtual bool ValidateCandidate(const TypoCorrection &candidate) {
if (candidate.getEditDistance() == 0)