OrderedCollection>before:ifAbsent:

Thomas Koenig tomkoenig at mindspring.com
Mon May 2 02:43:04 UTC 2005



Jim Menard

> On Apr 30, 2005, at 12:05 PM, Thomas Koenig wrote:
> > Patch 6159 in 3.9 has the fix (this can also be applied to 3.7)
> > SequenceableCollection>>before: target ifAbsent: exceptionBlock
> > 	"Answer the receiver's element immediately before target. Answer
> > 	the result of evaluating the exceptionBlock if target is not an 
> > element
> > 	of the receiver, or if there are no elements before it."
> >
> > 	| index |
> > 	index _ self indexOf: target.
> > 	^ (index == 0 or: [index == 1])
> > 		ifTrue: [exceptionBlock value]
> > 		ifFalse: [self at: index - 1]
> 
> Thank you. A question: how was it decided that the comment 
> was correct 
> and the code was wrong? 
Can't really give you much of the history on this.  I can say that IMO
the intention revealing selector was congruent with the comment and not
the code.  
>I ask for two reasons, one practical and one 
> philosophical: (1) Will it break anybody's code to change this code? 
Again don't know. Note there is code such at the Traits package that
won't work w/o the fix. 
> (2) Is there a unit test that covers this, and if so what was it 
> testing?
Not that I know of. Unfortunately we are still a way from where we rely
on unit tests to drive or even validate out code fixes.  




More information about the Squeak-dev mailing list