[squeak-dev] The Trunk: PackageInfo-Base-bf.42.mcz

Chris Muller asqueaker at gmail.com
Mon Apr 19 23:14:16 UTC 2010


This would be a good lint check.

On Sun, Apr 18, 2010 at 7:59 PM,  <commits at source.squeak.org> wrote:
> Bert Freudenberg uploaded a new version of PackageInfo-Base to project The Trunk:
> http://source.squeak.org/trunk/PackageInfo-Base-bf.42.mcz
>
> ==================== Summary ====================
>
> Name: PackageInfo-Base-bf.42
> Author: bf
> Time: 19 April 2010, 2:59:54.127 am
> UUID: 78ff57ba-4f49-4046-a25a-274c29fa036e
> Ancestors: PackageInfo-Base-bp.41
>
> - rename a temp shadowing an inst var
>
> =============== Diff against PackageInfo-Base-bp.41 ===============
>
> Item was changed:
>  ----- Method: PackageInfo>>changeRecordForOverriddenMethod: (in category 'testing') -----
>  changeRecordForOverriddenMethod: aMethodReference
>        | sourceFilesCopy method position |
>        method := aMethodReference actualClass compiledMethodAt: aMethodReference methodSymbol.
>        position := method filePosition.
>        sourceFilesCopy := SourceFiles collect:
>                [:x | x isNil ifTrue: [ nil ]
>                                ifFalse: [x readOnlyCopy]].
> +       [ | file prevPos prevFileIndex chunk stamp methodCategory tokens |
> -       [ | file prevPos prevFileIndex preamble stamp methodCategory tokens |
>        method fileIndex == 0 ifTrue: [^ nil].
>        file := sourceFilesCopy at: method fileIndex.
>        [position notNil & file notNil]
>                whileTrue:
>                [file position: (0 max: position-150).  "Skip back to before the preamble"
>                [file position < (position-1)]  "then pick it up from the front"
> +                       whileTrue: [chunk := file nextChunk].
> -                       whileTrue: [preamble := file nextChunk].
>
>                "Preamble is likely a linked method preamble, if we're in
>                        a changes file (not the sources file).  Try to parse it
>                        for prior source position and file index"
>                prevPos := nil.
>                stamp := ''.
> +               (chunk findString: 'methodsFor:' startingAt: 1) > 0
> +                       ifTrue: [tokens := Scanner new scanTokens: chunk]
> -               (preamble findString: 'methodsFor:' startingAt: 1) > 0
> -                       ifTrue: [tokens := Scanner new scanTokens: preamble]
>                        ifFalse: [tokens := Array new  "ie cant be back ref"].
>                ((tokens size between: 7 and: 8)
>                        and: [(tokens at: tokens size-5) = #methodsFor:])
>                        ifTrue:
>                                [(tokens at: tokens size-3) = #stamp:
>                                ifTrue: ["New format gives change stamp and unified prior pointer"
>                                                stamp := tokens at: tokens size-2.
>                                                prevPos := tokens last.
>                                                prevFileIndex := sourceFilesCopy fileIndexFromSourcePointer: prevPos.
>                                                prevPos := sourceFilesCopy filePositionFromSourcePointer: prevPos]
>                                ifFalse: ["Old format gives no stamp; prior pointer in two parts"
>                                                prevPos := tokens at: tokens size-2.
>                                                prevFileIndex := tokens last].
>                                (prevPos = 0 or: [prevFileIndex = 0]) ifTrue: [prevPos := nil]].
>                ((tokens size between: 5 and: 6)
>                        and: [(tokens at: tokens size-3) = #methodsFor:])
>                        ifTrue:
>                                [(tokens at: tokens size-1) = #stamp:
>                                ifTrue: ["New format gives change stamp and unified prior pointer"
>                                                stamp := tokens at: tokens size]].
>                methodCategory := tokens after: #methodsFor: ifAbsent: ['as yet unclassifed'].
>                (self includesMethodCategory: methodCategory ofClass: aMethodReference actualClass) ifTrue:
>                        [methodCategory = (Smalltalk at: #Categorizer ifAbsent: [Smalltalk at: #ClassOrganizer]) default ifTrue: [methodCategory := methodCategory, ' '].
>                        ^ ChangeRecord new file: file position: position type: #method
>                                                class: aMethodReference classSymbol category: methodCategory meta: aMethodReference classIsMeta stamp: stamp].
>                position := prevPos.
>                prevPos notNil ifTrue:
>                        [file := sourceFilesCopy at: prevFileIndex]].
>                ^ nil]
>                        ensure: [sourceFilesCopy do: [:x | x notNil ifTrue: [x close]]]
>        !
>
>
>


More information about the Squeak-dev mailing list