[squeak-dev] The Inbox: Protocols-jmck.44.mcz

Bert Freudenberg bert at freudenbergs.de
Fri Sep 6 14:07:44 UTC 2013


On 2013-09-06, at 08:21, Frank Shearar <frank.shearar at gmail.com> wrote:

> On 6 September 2013 00:59,  <commits at source.squeak.org> wrote:
>> A new version of Protocols was added to project The Inbox:
>> http://source.squeak.org/inbox/Protocols-jmck.44.mcz
>> 
>> ==================== Summary ====================
>> 
>> Name: Protocols-jmck.44
>> Author: jmck
>> Time: 5 September 2013, 7:59:50.198 pm
>> UUID: c4a851ef-6f9c-6f43-b0f4-b4ff12060089
>> Ancestors: Protocols-fbs.43
>> 
>> Vocabulary class>>typeChoices throws an error if Preferences>>allowEtoysUserCustomEvents is false
>> Mantis #7786
>> 
>> =============== Diff against Protocols-fbs.43 ===============
>> 
>> Item was changed:
>>  ----- Method: Vocabulary class>>typeChoices (in category 'type vocabularies') -----
>>  typeChoices
>>        "Answer a list of all user-choosable data types"
>> 
>>        | aList |
>>        (aList := self allStandardVocabularies
>>                select:
>>                        [:aVocab | aVocab representsAType]
>>                thenCollect:
>>                        [:aVocab | aVocab vocabularyName]).
>> +       Preferences allowEtoyUserCustomEvents ifFalse: [aList removeKey: #CustomEvents].
>> -       Preferences allowEtoyUserCustomEvents ifFalse: [aList remove: #CustomEvents ifAbsent: []].
>>        ^ aList asSortedArray!
> 
> 
> I'm not in front of an image right now, but I find it a bit strange
> that something Dictionary-y like #removeKey: is being sent to
> something called "aList".
> 
> If aList will contain a Dictionary sometimes and a list-like
> collection (Array, OrderedCollection) other times, first let me run
> and hide in a corner so my crying doesn't upset anyone, and second
> let's change the variable name to aListOrDictionary.


No, the proposed "fix" is just plain wrong.

#allStandardVocabularies answers an IdentityDictionary, and aList is an OrderedCollection (at least in the Etoys image) so the original #remove:ifAbsent: makes sense, whereas #removeKey: does not.

- Bert -




More information about the Squeak-dev mailing list