too me it looks like we are violating the fact that a list IS NOT A SET.

Categorizer>>allMethodSelectors
        "give a list of all method selectors."

        ^ elementArray copy sort

ClassOrganization>>allMethodSelectors
        
        ^ protocolOrganizer allMethods


ProtocolOrganizer>>allMethods

        ^ self protocols gather: [:p | p methods ].

gather: aBlock
        "This method is kept for compatibility reasons, use flatCollect 
instead."
        ^ self flatCollect: aBlock.

Note that it would be good to have a comment in this second method. Because now 
I do not know.

initialize

        super initialize.

        protocols := IdentitySet new.
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

        allProtocol := AllProtocol protocolOrganizer: self.



So I would suggest that allMethods return something with an order.
Esteban???

ProtocolOrganizer>>allMethods

        ^ self protocols gather: [:p | p methods ].

=> 
ProtocolOrganizer>>allMethods

        ^ (self protocols gather: [:p | p methods ]) asArray

Stef


On Nov 24, 2013, at 9:31 PM, Stéphane Ducasse <[email protected]> wrote:

> well well well
> 
> messageList
>       "Answer an Array of the message selectors of the currently selected 
> message category, provided that the messageCategoryListIndex is in proper 
> range.  Otherwise, answer an empty Array  If messageCategoryListIndex is 
> found to be larger than the number of categories (it happens!), it is reset 
> to zero."
>       | sel |
>       (sel := self messageCategoryListSelection) ifNil: [
>               ^ self classOrMetaClassOrganizer
>                       ifNil: [Array new]
>                       ifNotNil: [self classOrMetaClassOrganizer 
> allMethodSelectors]
>       ].
> 
>       ^ (self classOrMetaClassOrganizer listAtCategoryNumber: 
> messageCategoryListIndex)
>                               ifNil: [messageCategoryListIndex := 0.  Array 
> new]
> 
> it looks like messageList or allMethodSelectors got changed and do not return 
> anymore an indexable collection.
> So I will fix that too. 
> 
> Stef
> 
> 
> 
> On Nov 24, 2013, at 9:24 PM, Stéphane Ducasse <[email protected]> 
> wrote:
> 
>> Smalltalk tools register: Browser as: #browser
>> Smalltalk tools openClassBrowser
>> 
>> 
>> 
>> PluggableListMorph was not robust enough
>> Apparently when getListSelector returns a set (like messageList now in 3.0 
>> then getList breaks
>> 
>> getList
>>      "Answer the list to be displayed.  Caches the returned list in the 
>> 'list' ivar"
>>      getListSelector == nil ifTrue: [^ #()].
>>      list := model perform: getListSelector.
>>      list == nil ifTrue: [^ #()].
>>      list := list collectWithIndex: [ :item :index | self wrapItem: item 
>> index: index ].
>>      ^ list
>> 
>> => fix the problem. I will produce a slice. And I think that the messageList 
>> returning a set is a mistake too.
>> 
>> getList
>>      "Answer the list to be displayed.  Caches the returned list in the 
>> 'list' ivar"
>>      getListSelector == nil ifTrue: [^ #()].
>>      list := (model perform: getListSelector) asArray.
>>      list == nil ifTrue: [^ #()].
>>      list := list collectWithIndex: [ :item :index | self wrapItem: item 
>> index: index ].
>>      ^ list
>> 
>> Stf
> 


Reply via email to