[BUG] Interval Copy
Andrew P. Black
black at cse.ogi.edu
Wed Mar 1 21:09:50 UTC 2000
I was a bit disconcerted to find that
(1 to: 10) copy
answers an array, not an Interval.
Interestingly, the Interval copy method says:
"Return a copy of me. Override the superclass because my species is
Array and copy, as inherited from SequenceableCollection, uses
copyFrom:to:, which creates a new object of my species."
Unfortunately, the comment is wrong -- perhaps it was right at some
time in the past, but at present (2.7) it is shallowCopy that is
overridden in SequencableCollection to use copyFrom:to:. So this copy
method does not help.
In fact, it just repeats what is already inherited from Object, so it
may as well be removed, along with the confusing comment.
The fix is to define shallowCopy in class Interval. But the only way
that I can think of to get the version in class Object, is to write
^ self perform: #shallowCopy withArguments: #() inSuperclass: Object.
This is pretty ugly, but does the right thing, even if it does it
slowly. Is there a better suggestion from the list?
More information about the Squeak-dev