On Aug 3, 2011, at 12:51 38PM, Mariano Martinez Peck wrote:



On Wed, Aug 3, 2011 at 12:42 PM, Nicolas Cellier <nicolas.cellier.aka.nice@gmail.com> wrote:
I'm pretty sure the array inst var of your WeakOrderedColleciton is no
more a WeakArray but a simple Array.

Yes, indeed, it is a normal Array and that cought my attention. But since I have no idea about Weak stuff...I also noticed that WeakOrderedCollection is declared as:

OrderedCollection subclass: #WeakOrderedCollection
    instanceVariableNames: ''
    classVariableNames: ''
    poolDictionaries: ''
    category: 'Collections-Weak'

instead of using the #weakSubclass: ... message:

OrderedCollection weakSubclass: #WeakOrderedCollection
    instanceVariableNames: ''
    classVariableNames: ''
    poolDictionaries: ''
    category: 'Collections-Weak'

Because the slots of the WeakOrderedCollection aren't weak. Those if its instance variable array is.

 
This is because Pharo's WeakOrderedCollection is broken...


Do you know a weak collection that is not broken in Pharo and let me do a addLast: ?
 
Every reference to Array from within OrderedCollection should be
replaced with message send (self arrayType).
See for example, OrderedCollection>>#grow


Thanks. I will check how many there are and try to fix them.

Only grow. (Well, asArray too, but that doesn't make sense to change)

Cheers,
Henry