[V3dot10] Re: [Squeak 0006937]: removeAll: aCollection doesn't do what we expect if aCollection==self

Klaus D. Witzel klaus.witzel at cobss.com
Thu May 29 17:10:35 UTC 2008


Cedrick, Nicolas,

I will not be around from Wednesday on for two weeks. Have you seen  
Keith's message about

- http://installer.pbwiki.com/MinorFixesUnstable-Squeak3%3A10

where he sets a deadline of two weeks. If one of you could add a test  
before that (from the material discussed) then perhaps #6937 could go for  
3.11?

/Klaus

> A NOTE has been added to this issue.
> ======================================================================
> http://bugs.squeak.org/view.php?id=6937
> ======================================================================
> Reported By:                cdrick
> Assigned To:
> ======================================================================
> Project:                    Squeak
> Issue ID:                   6937
> Category:                   Collections
> Reproducibility:            always
> Severity:                   minor
> Priority:                   normal
> Status:                     new
> ======================================================================
> Date Submitted:             02-19-2008 18:12 UTC
> Last Modified:              02-19-2008 22:43 UTC
> ======================================================================
> Summary:                    removeAll: aCollection doesn't do what we  
> expect if
> aCollection==self
> Description:
> This known error has had a revival originating from a mail of Sophie in  
> the
> beginnner list... and I ended up opening a bug report...
>
> The problem is:
>
> col := #(1 2 3) asOrderedCollection.
> col  removeAll: col.
> ^col   returns an OrderedCollection(2) instead of an empty one as we  
> would
> expect...
> ======================================================================
>
> ----------------------------------------------------------------------
>  kwl - 02-19-08 18:51
> ----------------------------------------------------------------------
> OrderedCollection-removeAll-kwl-6937.st tested with the 441 cases in the
> CollectionTests category, all green.
>
> ----------------------------------------------------------------------
>  nicolas cellier - 02-19-08 20:28
> ----------------------------------------------------------------------
> "As posted in beginners list, self == aCollection does not handle case  
> when
> aCollection is just a wrapper on self...
> So the change won't removeAll problems...
> in a 3.9 image try this:"
>
> | collec1 collec2 |
> collec1 := OrderedCollection with: 'a' with: 'b' with: 'c'.
> collec2 := MappedCollection collection: collec1 map: (3 to: 1 by: -1).
> collec1 removeAll: collec2.
> collec1 inspect
>
> "Agree, yet, the problem lies in super...
> Note: MappedCollection was removed from 3.10, but in spirit there can be
> other wrapper collections (i used some myself)."
>
> ----------------------------------------------------------------------
>  nicolas cellier - 02-19-08 21:09
> ----------------------------------------------------------------------
> "Oops, i copy/pasted the wrong test.
> The one that fails is more obvious:"
>
> | collec1 collec2 |
> collec1 := OrderedCollection with: 'a' with: 'b' with: 'c'.
> collec2 := MappedCollection collection: collec1 map: (1 to: 3).
> collec1 removeAll: collec2.
> collec1
>
> ----------------------------------------------------------------------
>  kwl - 02-19-08 21:41
> ----------------------------------------------------------------------
> @nicolas
> as mentioned in beginners at lists.squeakfoundation.org, since 3.10
> MappedCollection no longer exists. Do you have a counter example which
> fails indeed in Squeak 3.10; can you break the attached fix in 3.10?
>
> ----------------------------------------------------------------------
>  nicolas cellier - 02-19-08 22:43
> ----------------------------------------------------------------------
> Proposed change is OK to me. I vote for inclusion in 3.11.
> It does not fail per se. super fails...
>
> Simply, i wanted to point that it won't solve all the tricky cases.
> So these cases will have to be handled at super level.
> And adding a self == aCollection at super level will still have flaws.
>
> MappedCollection is not mainstream anymore, but other wrappers could
> become, see LazyLists and LazyCollections in Squeak source...
> Collection wrapper is a classical pattern.
> As long as they are used under your control, no problem.
>
> Issue History
> Date Modified   Username       Field                    Change
> ======================================================================
> 02-19-08 18:12  cdrick         New Issue
> 02-19-08 18:51  kwl            File Added:
> OrderedCollection-removeAll-kwl-6937.st
> 02-19-08 18:51  kwl            Note Added: 0011843
> 02-19-08 20:28  nicolas cellierNote Added: 0011846
> 02-19-08 21:09  nicolas cellierNote Added: 0011847
> 02-19-08 21:41  kwl            Note Added: 0011848
> 02-19-08 22:43  nicolas cellierNote Added: 0011850
> ======================================================================
>




More information about the V3dot10 mailing list