[Cuis-dev] [DEFECT] #copyFrom:count: for OrderedCollections

Gerald Klix cuis.01 at klix.ch
Tue Feb 6 07:44:36 PST 2024


OMG, what have I done!

PLEASE DON'T!!!!!!!!!!!!!

See below.


On 2/6/24 3:56 PM, Juan Vuletich via Cuis-dev wrote:
> On 2/1/2024 5:43 PM, Gerald Klix via Cuis-dev wrote:
>> Hi all, Hi Juan,
>>
>> I found a glitch in #copyFrom:count.
>> IHMO both expression should work:
>>
>> --- snip ---
>> 1 to: 10 :: copyFrom: 1 count: 3.
>>
>> 1 to: 10 :: asOrderedCollection copyFrom: 1 count: 3.
>> --- snap ---
>>
>> The later creates an empty OrderedCollection and fails.
>>
>> I attached a change set, that replaces sends of #new: with
>> sends of #sizeOf: in various methods,
>> although some of these methods are special cased
>> in OrderedCollection.
>>
>>
>> Best Regards,
>>
>> Gerald
>
> Thanks Gerald. I integrated this a few days ago. Still, I think that
>
> | n |
> n := whatever number.
> (AnyCollectionClass new: n) size = n
>
> should _always_ evaluate to true (or fail if it doesn't make sense). 
> So I pushed some very substantial changes that kept me quite busy for 
> several days. Now `OrderedCollection new: 10` will fail. Same for Set, 
> Dictionary, Bag and a few others. I've adjusted many packages 
> accordingly.
>
> Cheers,
>
Oh my goodness, that breaks so much of my and everyone else's code.
Please don't!!!!!

This behavior was already present in Smalltalk/V for MSDos
and in Smalltalk-80 (see: https://github.com/dbanay/Smalltalk)

Please note, 40 year ago my computer science education
began more or less with Algebraic Specification:
I am acutely aware of this inconsistency!

Everyone – even language lawyers – can like with this invariant:
(AnyCollectionClass sizeOf: n) size = n

Please follow my advice!


Best Regards,

Gerald


More information about the Cuis-dev mailing list