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);
|
ObjCMethodDecl *Method = ClassDecl->lookupClassMethod(Sel);
|
||||||
QualType returnType;
|
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.
|
// Before we give up, check if the selector is an instance method.
|
||||||
if (!Method)
|
if (!Method)
|
||||||
Method = ClassDecl->lookupInstanceMethod(Sel);
|
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