forked from OSchip/llvm-project
Sema::ActOnClassMessage() needs to look through it's local implementation for private class methods.
llvm-svn: 51938
This commit is contained in:
parent
cfd41dbd5e
commit
f4308aac53
|
@ -170,6 +170,12 @@ Sema::ExprResult Sema::ActOnClassMessage(
|
|||
ObjCMethodDecl *Method = ClassDecl->lookupClassMethod(Sel);
|
||||
QualType returnType;
|
||||
|
||||
// If we have an implementation in scope, check "private" methods.
|
||||
if (!Method) {
|
||||
if (ObjCImplementationDecl *ImpDecl =
|
||||
ObjCImplementations[ClassDecl->getIdentifier()])
|
||||
Method = ImpDecl->getClassMethod(Sel);
|
||||
}
|
||||
// Before we give up, check if the selector is an instance method.
|
||||
if (!Method)
|
||||
Method = ClassDecl->lookupInstanceMethod(Sel);
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
// RUN: clang -fsyntax-only -verify %s
|
||||
typedef signed char BOOL;
|
||||
typedef int NSInteger;
|
||||
|
||||
@protocol NSObject
|
||||
- (BOOL)isEqual:(id)object;
|
||||
- (BOOL)respondsToSelector:(SEL)s;
|
||||
@end
|
||||
|
||||
@interface NSObject <NSObject> {}
|
||||
@end
|
||||
|
||||
@class NSString, NSData, NSMutableData, NSMutableDictionary, NSMutableArray;
|
||||
|
||||
@protocol PBXCompletionItem
|
||||
- (NSString *) name;
|
||||
- (NSInteger)priority;
|
||||
- setPriority:(NSInteger)p;
|
||||
@end
|
||||
|
||||
@implementation PBXCodeAssistant // expected-warning{{cannot find interface declaration for 'PBXCodeAssistant'}}
|
||||
static NSMutableArray * recentCompletions = ((void *)0);
|
||||
+ (float) factorForRecentCompletion:(NSString *) completion
|
||||
{
|
||||
for (NSObject<PBXCompletionItem> * item in [self completionItems]) // expected-warning{{method '-completionItems' not found (return type defaults to 'id')}}
|
||||
{
|
||||
if ([item respondsToSelector:@selector(setPriority:)])
|
||||
{
|
||||
[(id)item setPriority:[item priority] / [PBXCodeAssistant factorForRecentCompletion:[item name]]];
|
||||
}
|
||||
}
|
||||
}
|
||||
@end
|
||||
|
Loading…
Reference in New Issue