Hi Peter
Good question. Nathanael will certainly reply but just two points:
- if canUnderstand: #foo replies true when a class has a method foo ^ self subclassResponsibility or shouldNotImplement then there is something really wrong in smalltalk....because normally people think that they can call foo on the receiver but this is not the case with those examples.
This means that you will never be able to find code from VW or nay other smalltalk that breaks what nathanael proposes because else the code itself breaks in the other dialects :) funny no! - The usage of canUnderstand: should really be restricted. In fact this is a meta level interface functionality and we should have a task force to carefully evaluate the use in the current image as usage of canUnderstand is 99 % of the time a sign of not so well-designed code.
Thanks for letting me having fun! This was really cool.
Stef
On 12 déc. 03, at 18:05, Peter van Rooijen wrote:
From: n.schaerli@gmx.net
from preamble:
"Change Set: KCP-0112-FixCanUnderstand Date: 12 December 2003 Author: Nathanael Schaerli
Fixes canUnderstand so that it deals with abstract methods (i.e., subclassResponsibility and shouldNotImplement) in the right way."!
Natanael,
Are you sure this is wise? How exactly did you decide what is "the right way"?
How do other dialects implement #canUnderstand:? Are they also "wrong"?
If you need the new semantics for something you are working on, why not add another method that does exactly what you want instead of modifying this old-timer?
Regards,
Peter van Rooijen