[squeak-dev] The Inbox: Collections-nice.530.mcz

Chris Cunningham cunningham.cb at gmail.com
Wed Sep 4 18:02:37 UTC 2013


Wouldn't it be nice if there was a non-annoying way to mark methods that
were changed by rewrite tools (or other 'global' changing tools) as being
changed by those tools?  And to keep track of the last person that deeply
thought about the specific method?

I think a series of notes like "Changed on ##/##/## by someone using
rewrite tool; previous changer was someoneelse on ##/##/##" would help, but
would also drive me nuts.  Too much text to wade through with too little
info.

Maybe the version stamp?  Especially if it was an object (lastChanger,
lastModified, lastNonToolChanger/date, originalAuthor/date)?  I'd find it
interesting.  Maybe useful, but if no one else cares, not that useful.

-Chris


On Wed, Sep 4, 2013 at 10:06 AM, Levente Uzonyi <leves at elte.hu> wrote:

> On Wed, 4 Sep 2013, Nicolas Cellier wrote:
>
>  Well, as you were the last modifier, I prefer to have your advice :)
>>
>
> It was just a cosmetic #== -> #= change using a rewrite tool. I didn't
> spend any time to understand the method back then.
>
>
> Levente
>
>
>
>> Nicolas
>>
>>
>> 2013/9/4 Levente Uzonyi <leves at elte.hu>
>>       On Wed, 4 Sep 2013, commits at source.squeak.org wrote:
>>
>>             A new version of Collections was added to project The Inbox:
>>             http://source.squeak.org/**inbox/Collections-nice.530.mcz<http://source.squeak.org/inbox/Collections-nice.530.mcz>
>>
>>             ==================== Summary ====================
>>
>>             Name: Collections-nice.530
>>             Author: nice
>>             Time: 4 September 2013, 2:21:28.852 am
>>             UUID: d732aa23-1c77-4c1e-abc0-**d8d4506b7f9f
>>             Ancestors: Collections-ul.529
>>
>>             Fix this:
>>              self assert: (allSymbols select: [:s | s = '+']) size = 1.
>>
>>             1) It is un-necessary to enumerate the 1-char symbols, they
>> already are in SymbolTable (the first time they were created via
>> #findIntern: or by virtue of last #rehash) !
>>
>>             2) We can use a WeekArray rather than an Array because there
>> is no point in keeping a reference to unused 1-char symbols.
>>
>>             Maybe we should get rid of OneCharacterSymbols class var, but
>> I didn't dare...
>>
>>
>> I say we should nuke it. The only user is Symbol class >>
>> #selectorsContaining:, but that method is pretty much broken:
>> - it uses OneCharacterSymbols only for infix selectors
>> - it can't find infix selectors longer than 2 characters
>> - it tries to optimize some stuff, but wastes cycles on other stuff
>>
>>
>> Levente
>>
>>
>>       =============== Diff against Collections-ul.529 ===============
>>
>>       Item was changed:
>>        ----- Method: Symbol class>>allSymbols (in category 'access') -----
>>        allSymbols
>>               "Answer all interned symbols"
>>               ^Array streamContents:[:s|
>>                       s nextPutAll: NewSymbols.
>>       -               s nextPutAll: OneCharacterSymbols.
>>                       s nextPutAll: SymbolTable.
>>               ].
>>        !
>>
>>       Item was changed:
>>        ----- Method: Symbol class>>initialize (in category 'class
>> initialization') -----
>>        initialize
>>
>>               "Symbol initialize"
>>
>>               Symbol rehash.
>>       +       OneCharacterSymbols := WeakArray new: 256.
>>       +       (0 to: 255) do: [ :byte | byte asCharacter asSymbol].
>>       -       OneCharacterSymbols := nil.
>>       -       OneCharacterSymbols := (1 to: 256) collect: [ :i | (i - 1)
>> asCharacter asSymbol].
>>               Smalltalk addToShutDownList: self.
>>        !
>>
>>       Item was changed:
>>        ----- Method: Symbol class>>internCharacter: (in category
>> 'instance creation') -----
>>        internCharacter: aCharacter
>>               aCharacter asciiValue > 256 ifTrue:[^self intern:
>> aCharacter asString].
>>       +       ^(OneCharacterSymbols at: aCharacter asciiValue + 1) ifNil:
>> [OneCharacterSymbols at: aCharacter asciiValue + 1 put: (self intern:
>> aCharacter asString)]
>>       -       OneCharacterSymbols ifNil: [^self intern: aCharacter
>> asString].
>>       -       ^OneCharacterSymbols at: aCharacter asciiValue + 1
>>        !
>>
>>       Item was changed:
>>        ----- Method: Symbol class>>selectorsContaining: (in category
>> 'access') -----
>>        selectorsContaining: aString
>>               "Answer a list of selectors that contain aString within
>> them. Case-insensitive.  Does return symbols that begin with a capital
>> letter."
>>
>>               | size selectorList ascii |
>>
>>               selectorList := OrderedCollection new.
>>               (size := aString size) = 0 ifTrue: [^selectorList].
>>
>>               aString size = 1 ifTrue:
>>                       [
>>                               ascii := aString first asciiValue.
>>       +                       ascii < 128 ifTrue: [(OneCharacterSymbols
>> at: ascii+1) ifNotNil: [:s | selectorList add: s]]
>>       -                       ascii < 128 ifTrue: [selectorList add:
>> (OneCharacterSymbols at: ascii+1)]
>>                       ].
>>
>>               (aString first isLetter or: [aString first isDigit])
>> ifFalse:
>>                       [
>>                               aString size = 2 ifTrue:
>>                                       [Symbol hasInterned: aString ifTrue:
>>                                               [:s | selectorList add: s]].
>>                               ^selectorList
>>                       ].
>>
>>               selectorList := selectorList copyFrom: 2 to: selectorList
>> size.
>>
>>               self allSymbolTablesDo: [:each |
>>                       each size >= size ifTrue:
>>                               [(each findSubstring: aString in: each
>> startingAt: 1
>>                                       matchTable: CaseInsensitiveOrder) >
>> 0
>>                                                       ifTrue:
>> [selectorList add: each]]].
>>
>>               ^selectorList reject: [:each | "reject non-selectors, but
>> keep ones that begin with an uppercase"
>>                       each numArgs < 0 and: [each asString
>> withFirstCharacterDownshifted numArgs < 0]].
>>
>>        "Symbol selectorsContaining: 'scon'"!
>>
>>
>>
>>
>>
>>
>>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20130904/28517b37/attachment.htm


More information about the Squeak-dev mailing list