tim Rowledge uploaded a new version of ShoutCore to project The Inbox: http://source.squeak.org/inbox/ShoutCore-tpr.59.mcz
==================== Summary ====================
Name: ShoutCore-tpr.59 Author: tpr Time: 16 August 2017, 3:31:37.498742 pm UUID: 88fc7c09-2574-451d-817f-2b1289f62ae7 Ancestors: ShoutCore-ul.58
#sharedPools was making a Set with included nils, which means that SHParserST80>resolvePartial: breaks when 'c sharedPools do:[.... is used. This change prevents the obscene spectacle of a Set with deliberately included nils.
=============== Diff against ShoutCore-ul.58 ===============
Item was changed: ----- Method: SHMCClassDefinition>>sharedPools (in category 'act like a class') ----- sharedPools | d | d := Set new. classDefinition poolDictionaries do:[:each | + Smalltalk at: each asSymbol ifPresent:[:v| d add: v] ]. - d add: (Smalltalk at: each asSymbol ifAbsent:[nil]) ]. ^d!
Since you're singing the blues, I'll join in. It's not a "obscene spectacle of a Set with deliberately included nils", but *accidentally included* since, as you said, it was relying on the old implementation. It's accidental that they get in there now.
My whine is that it's too bad that Environment>>'declarations' is an IdentityDictionary instead of just a plain ol'e Dictionary, so we wouldn't need the send the expensive #asSymbol.
Using IdentityDictionary's "because the keys are gonna be Symbols" is popular among developers, but I see no benefit. In fact, it essentially exposes the internal implementation whilst inconveniencing the senders. Better to inherit #= from Object (which defaults to ==) so that the lower abstraction of #= can dictate what happens on a per-object basis, dynamically.
On Wed, Aug 16, 2017 at 5:31 PM, commits@source.squeak.org wrote:
tim Rowledge uploaded a new version of ShoutCore to project The Inbox: http://source.squeak.org/inbox/ShoutCore-tpr.59.mcz
==================== Summary ====================
Name: ShoutCore-tpr.59 Author: tpr Time: 16 August 2017, 3:31:37.498742 pm UUID: 88fc7c09-2574-451d-817f-2b1289f62ae7 Ancestors: ShoutCore-ul.58
#sharedPools was making a Set with included nils, which means that SHParserST80>resolvePartial: breaks when 'c sharedPools do:[.... is used. This change prevents the obscene spectacle of a Set with deliberately included nils.
=============== Diff against ShoutCore-ul.58 ===============
Item was changed: ----- Method: SHMCClassDefinition>>sharedPools (in category 'act like a class') ----- sharedPools | d | d := Set new. classDefinition poolDictionaries do:[:each |
Smalltalk at: each asSymbol ifPresent:[:v| d add: v] ].
d add: (Smalltalk at: each asSymbol ifAbsent:[nil]) ]. ^d!
squeak-dev@lists.squeakfoundation.org