On Apr 19, 2012, at 7:02 PM, Eliot Miranda wrote:
>
>
> 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.
>
But the tools use Ring... somehow I thin it's odd that the inner workings of
Traits used MethodReference (it was just because methods have no selector...)
Marcus
--
Marcus Denker -- http://marcusdenker.de