Hi everybody!

Well, maybe you are already aware of this... maybe not. I tried to find an
issue about this and unless I didn't think of the right keywords, it's not
there.

I was debugging a template method and sudenly I found myself spending ours
trying to find out why I got different results when printing the result of a
message sent to super and when steping into that message and printing the
(same) result there.

Imagine this simple situation (I attatch the complete code and some tests so
you can reproduce this):

AverageTotalization inherits from Totalization.
WeightedAverageTotalization inherits from AverageTotalization.

Totalization>>total
 ^self summatory

AverageTotalization>>total
        ^*(**super total)* / self denominator

AverageTotalization>> denominator
        ^values size

WeightedAverageTotalization>> denominator
"Weights is a dictionary"
 ^self weights values sum


If I debug aWeightedAverateTotalization total  and try to print *super total
* in the debugger ParagraphEditor, I'll get this result:

(self summatory / self denominator)

instead of just:

self summatory

This only happens when I print or inspect or other do-its in the debugger
window. The method lookup works OK when just evaluating the code (the tests
I made are green).

I think that when you print or inspect (etc) *super total*, the evaluation
context takes WeightedAverageTotalization class instead of
AverageTotalization, so when total is sent to super under that context, the
code is looked up on AverageTotalization instead of Totalization.
Could that be possible? Am I thinking right?

I spent a *while* chasing this bug, and I found a solution, but I don't know
if it's OK or if it's the best. It's simple and it seems to work. I tested
it in the last PharoCore1.1 unstable image.

I attach some code to reproduce the error (you'll get a halt when you run
the test, read the comments, the problem is clear when you run the weighted
average test), and the code that fixes this.

If you confirm that this was not a known issue, I'll register it on the
issue tracker with both these attachments.

If it was a known issue... well, I learned :) (I think XD)

Cheers!

Carla.

Attachment: DoItBugsInTemplateMethod.st
Description: Binary data

Attachment: fixForSuperSendsOnDoIts.1.cs
Description: Binary data

_______________________________________________
Pharo-project mailing list
Pharo-project@lists.gforge.inria.fr
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to