[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