From: Steve Naroff Date: Thu, 26 Feb 2009 18:16:19 +0000 (+0000) Subject: Fix method not found. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1f484f4aef0ea52b920e568e0c1fa2cbdfe98957;p=clang Fix method not found. This was a fairly recent regression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65547 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaExprObjC.cpp b/lib/Sema/SemaExprObjC.cpp index e3d2074c0e..5be84607b2 100644 --- a/lib/Sema/SemaExprObjC.cpp +++ b/lib/Sema/SemaExprObjC.cpp @@ -395,10 +395,10 @@ Sema::ExprResult Sema::ActOnInstanceMessage(ExprTy *receiver, Selector Sel, } if (Method && DiagnoseUseOfDecl(Method, receiverLoc)) return true; - } else { - // We're not in a method context, look for any factory method named 'Sel'. - Method = FactoryMethodPool[Sel].Method; } + // Look for any factory method named 'Sel'. + if (!Method) + Method = FactoryMethodPool[Sel].Method; if (!Method) Method = LookupInstanceMethodInGlobalPool( Sel, SourceRange(lbrac,rbrac)); diff --git a/test/SemaObjC/method-lookup-2.m b/test/SemaObjC/method-lookup-2.m index 4ebdb8e452..9939e34954 100644 --- a/test/SemaObjC/method-lookup-2.m +++ b/test/SemaObjC/method-lookup-2.m @@ -2,7 +2,10 @@ typedef signed char BOOL; @protocol NSObject ++ alloc; +- init; - (BOOL) isEqual:(id) object; +- (Class)class; @end @interface NSObject < NSObject > {} @end @@ -38,3 +41,22 @@ extern NSString *const NSWillBecomeMultiThreadedNotification; return[[self sharedInstance] run]; } @end + +@interface XX : NSObject + ++ classMethod; + +@end + +@interface YY : NSObject +- whatever; +@end + +@implementation YY + +- whatever { + id obj = [[XX alloc] init]; + [[obj class] classMethod]; +} + +@end