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)