Le 5 juil. 2011 à 22:19, Niels Grewe a écrit : > On Mon, Jul 04, 2011 at 05:52:29PM +0200, Quentin Mathé wrote: >> Le 6 mai 2011 à 20:33, Niels Grewe a écrit : >> >>> On Fri, May 06, 2011 at 06:33:22PM +0200, Quentin Mathé wrote: >>>> Do you have an idea to get this working on both Mac OS X and GNUstep in >>>> the same correct way? >>> >>> I had another look and I think I know what the problem is. In >>> -primitiveMethodSignatureForSelector: (line 1036), we are calling >>> +instanceMethodSignatureForSelector: on NSObject. Hence, the method >>> declared on ETCollectionMutationFilterProxy is not considered. >>> >>> So the funny question is not why it doesn't work on OS X, but why it >>> works on GNUstep. Or rather, why it did work, because the empty >>> collection test is failing for me with a fresh checkout. >> >> I finally worked out a fix for this issue. I was hoping to figure out a >> better solution than a category on NSObject, but it's more tricky than I >> expected as explained in the code comment. >> See http://svn.gna.org/viewcvs/etoile?rev=7064&view=rev > > Okay, now I can see what's going on here. Using the category should be > fine, but I wonder whether we could get away with calling > class_getInstanceMethod() and method_getTypeEncoding() instead (which is > what NSObject's +instanceMethodSignatureForSelector: will do anyways).
Right, that's a good point. I'm getting a bit lazy right now, so I'll let it as is for this release. >> The thing I don't understand though is why the method body is not empty for >> >> - (uintptr_t)pointerSizedProxyNull >> { >> if ([collection isEmpty]) >> { >> return 0; >> } >> NSInvocation *inv = [NSInvocation invocationWithTarget: self selector: >> _cmd arguments: nil]; >> uintptr_t retValue = 0; >> >> [self forwardInvocation: inv]; >> [inv getReturnValue: &retValue]; >> return retValue; >> } >> >> Because when I run the test suite, this code is never executed. > > If I recall correctly, the purpose of this is to allow > -pointerSizedProxyNull to be send to the members of the collection as > the payload message of a higher-order message. ok I see. > But I have to admit that > the chances of anybody implementing a method of that name are quite low. Indeed ;-) I'd be in favor of removing it then. Cheers, Quentin. _______________________________________________ Etoile-dev mailing list Etoile-dev@gna.org https://mail.gna.org/listinfo/etoile-dev