On Wed, Apr 18, 2012 at 11:27 PM, Marcus Denker <[email protected]>wrote:
> > On Apr 18, 2012, at 11:49 PM, Mariano Martinez Peck wrote: > > > Hi guys. I am running some tests with Fuel. In such test I create > classes and traits. The problem is that I get a: "MessageNotUnderstood: > receiver of "isProvided" is nil" > > Everything starts (it seems) when I do #addToComposition: and I > receive a MethodRecategorized event and RPackage calls > #systemMethodRecategorizedActionFrom: > > There, the problem is with -> method isProvidedByATrait > > the class of the method is 'AnObsoleteClassForTestToBeDeleted1' > > And the error finally arrives to #providedLocatedMethod where it does > "each method isProvided" the problem is that "each" is a > RGMethodDefinition with everything in nil except 'name' and 'annotations'. > > I attach PharoDebug.log. > > Any help is really appreaciated. > > we should fix this bug: > > http://code.google.com/p/pharo/issues/detail?id=4750 > > it used to be that methods did not know their name, thus MethodReference > had to be used for many things. > This combined with not sharing compiledMethods means that traits can use > methods > directly. > I'm very worried by this. This misses the fact that a MethodReference and a CompiledMethod are two different things *because* methods can be redefined. So if one holds onto a method that gets redefined one can have more than one method with the same name. However, a MethodReference always refers to the method that is currently installed. In this way a MethodReference is a pointer, a coordinate, but a method is a referent. Personally I think the distinction is important; browser tools should use references, not referents. > Marcus > > > -- > Marcus Denker -- http://marcusdenker.de > > > -- best, Eliot
