On Wed, Apr 18, 2012 at 11:27 PM, Marcus Denker <marcus.denker@inria.fr> 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