forked from OSchip/llvm-project
Objective-C. Handle case of multiple class methods
found in global pool as well. rdar://16808765 llvm-svn: 215603
This commit is contained in:
parent
ebf09360ec
commit
d288fad374
|
@ -2420,7 +2420,7 @@ ExprResult Sema::BuildInstanceMessage(Expr *Receiver,
|
|||
receiverIsId);
|
||||
if (Method)
|
||||
if (ObjCMethodDecl *BestMethod =
|
||||
SelectBestMethod(Sel, ArgsIn, Method->isInstanceMethod()))
|
||||
SelectBestMethod(Sel, ArgsIn, Method->isInstanceMethod()))
|
||||
Method = BestMethod;
|
||||
} else if (ReceiverType->isObjCClassType() ||
|
||||
ReceiverType->isObjCQualifiedClassType()) {
|
||||
|
@ -2473,6 +2473,10 @@ ExprResult Sema::BuildInstanceMessage(Expr *Receiver,
|
|||
<< Sel << SourceRange(LBracLoc, RBracLoc);
|
||||
}
|
||||
}
|
||||
if (Method)
|
||||
if (ObjCMethodDecl *BestMethod =
|
||||
SelectBestMethod(Sel, ArgsIn, Method->isInstanceMethod()))
|
||||
Method = BestMethod;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
|
||||
// rdar://16808765
|
||||
|
||||
@interface NSObject @end
|
||||
@interface NSObject
|
||||
+ (void)clsMethod:(int*)arg;
|
||||
@end
|
||||
|
||||
@class NSDictionary;
|
||||
@class NSError;
|
||||
|
@ -18,6 +20,7 @@
|
|||
@required
|
||||
- (void)getDonuts:(void (^)(NSDictionary *))replyBlock;
|
||||
- (void)getCake:(float*)arg, ...;
|
||||
+ (void)clsMethod:(float*)arg;
|
||||
@end
|
||||
|
||||
@implementation Foo
|
||||
|
@ -33,3 +36,7 @@
|
|||
[(id)0 getCake: &g, 1,3.14];
|
||||
}
|
||||
@end
|
||||
|
||||
void func( Class c, float g ) {
|
||||
[c clsMethod: &g];
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue