[cfe-commits] r145583 - in /cfe/trunk: lib/Sema/SemaDeclObjC.cpp test/SemaObjC/class-def-test-1.m

Douglas Gregor dgregor at apple.com
Thu Dec 1 07:37:53 PST 2011


Author: dgregor
Date: Thu Dec  1 09:37:53 2011
New Revision: 145583

URL: http://llvm.org/viewvc/llvm-project?rev=145583&view=rev
Log:
When typo-correction an Objective-C superclass name, don't
typo-correct to ourselves.

Modified:
    cfe/trunk/lib/Sema/SemaDeclObjC.cpp
    cfe/trunk/test/SemaObjC/class-def-test-1.m

Modified: cfe/trunk/lib/Sema/SemaDeclObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclObjC.cpp?rev=145583&r1=145582&r2=145583&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclObjC.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclObjC.cpp Thu Dec  1 09:37:53 2011
@@ -417,10 +417,15 @@
           DeclarationNameInfo(SuperName, SuperLoc), LookupOrdinaryName, TUScope,
           NULL, NULL, false, CTC_NoKeywords);
       if ((PrevDecl = Corrected.getCorrectionDeclAs<ObjCInterfaceDecl>())) {
-        Diag(SuperLoc, diag::err_undef_superclass_suggest)
-          << SuperName << ClassName << PrevDecl->getDeclName();
-        Diag(PrevDecl->getLocation(), diag::note_previous_decl)
-          << PrevDecl->getDeclName();
+        if (PrevDecl == IDecl) {
+          // Don't correct to the class we're defining.
+          PrevDecl = 0;
+        } else {
+          Diag(SuperLoc, diag::err_undef_superclass_suggest)
+            << SuperName << ClassName << PrevDecl->getDeclName();
+          Diag(PrevDecl->getLocation(), diag::note_previous_decl)
+            << PrevDecl->getDeclName();
+        }
       }
     }
 

Modified: cfe/trunk/test/SemaObjC/class-def-test-1.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/class-def-test-1.m?rev=145583&r1=145582&r2=145583&view=diff
==============================================================================
--- cfe/trunk/test/SemaObjC/class-def-test-1.m (original)
+++ cfe/trunk/test/SemaObjC/class-def-test-1.m Thu Dec  1 09:37:53 2011
@@ -30,4 +30,6 @@
 @interface XCElementUnit : TD_NSObject {}
 @end
 
-
+// Make sure we don't typo-correct to ourselves.
+ at interface SomeClassSub : SomeClassSup // expected-error{{cannot find interface declaration for 'SomeClassSup', superclass of 'SomeClassSub'}}
+ at end





More information about the cfe-commits mailing list