[squeak-dev] Complex isNumber

nicolas cellier ncellier at ifrance.com
Tue Mar 11 21:58:51 UTC 2008


Though my advice was to keep this change out of the image, it came in 
3.9 or 3.10, i don't know...
Complex isNumber allows a lightweight fix of Number = Complex bug.

BUT TOO MUCH CODE RELY ON A DIFFERENT BEHAVIOUR!

In less of one minute of browsing, i can construct a fail test like:

self shouldnt: [Dictionary at: 1 i  put: 'a complex number'; at: 2 put: 
'a number'; explore] raise: Error

Guess what, the failing method is called keysSortedSafely... But with 
this change in, nothing that was safe yesterday will be safe again ;-).



I recommend AGAIN to browse senders of isNumber and find maybe the one 
or two that are prepared for an instance of Complex.

MOST are expecting (isKindOf: Number), and not any number out of the set 
of real numbers.

This is consistent with traditional Smalltalk implementation, all 
subInstances of Number are in the set of real
(well except Float nan and Float infinity which were not in St-80).



I proposed isNumberExtension so that other Number extensions like 
Quaternion can be added too without a rewrite 
(http://bugs.squeak.org/view.php?id=2688).

This had no success, maybe the selector is not very well chosen...
I don't care, call it what you want, but please, not isNumber,



The bugs are minor, because fortunately, Complex are hardly ever used, 
so we can as well let this change rot in the image as is.

Personnally, i vote thumb down.

Nicolas




More information about the Squeak-dev mailing list