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]]] ! |
This would be a good lint check.
On Sun, Apr 18, 2010 at 7:59 PM, <[hidden email]> 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]]] > ! > > > |
Free forum by Nabble | Edit this page |