ChangesBrowser.st
changeset 15087 90d8b9febd7a
parent 15082 e188631fbd28
child 15090 27f730f4fd5b
equal deleted inserted replaced
15086:e93cd2eb8afa 15087:90d8b9febd7a
  1757         lastNr := self numberOfChanges.
  1757         lastNr := self numberOfChanges.
  1758 
  1758 
  1759         "if we apply multiple changes, and an error occurs,
  1759         "if we apply multiple changes, and an error occurs,
  1760          ask the user if all operations should be aborted..."
  1760          ask the user if all operations should be aborted..."
  1761         multipleApply := (lastNr - changeNr) > 1.
  1761         multipleApply := (lastNr - changeNr) > 1.
  1762 
  1762         AbortAllOperationRequest handle:[:ex |
  1763         changeNr to:lastNr do:[:changeNr |
  1763             ex return
  1764             changeListView setSelection:changeNr.
  1764         ] do:[
  1765             self applyChange:changeNr
  1765             changeNr to:lastNr do:[:changeNr |
  1766         ].
  1766                 changeListView setSelection:changeNr.
  1767         self autoSelect:self numberOfChanges.
  1767                 self applyChange:changeNr
       
  1768             ].
       
  1769             self autoSelect:self numberOfChanges.
       
  1770         ]
  1768     ]
  1771     ]
  1769 
  1772 
  1770     "Modified: 21.1.1997 / 22:25:29 / cg"
  1773     "Modified: 21.1.1997 / 22:25:29 / cg"
  1771 !
  1774 !
  1772 
  1775 
  6243     ].
  6246     ].
  6244 !
  6247 !
  6245 
  6248 
  6246 processNonMethodChunk
  6249 processNonMethodChunk
  6247     |s changeClass sel  cls p rec clsName ownerTree ownerName
  6250     |s changeClass sel  cls p rec clsName ownerTree ownerName
  6248      m nameAndClass|
  6251      m nameAndClass args instVarsArg classVarsArg categoryArg|
  6249 
  6252 
  6250     (chunkText startsWith:'''---- snap') ifTrue:[
  6253     (chunkText startsWith:'''---- snap') ifTrue:[
  6251         self processSnapshotChunk.
  6254         self processSnapshotChunk.
  6252         ^ self
  6255         ^ self
  6253     ].
  6256     ].
  6269     p := browser parseExpression:fullChunkText inNameSpace:Smalltalk.
  6272     p := browser parseExpression:fullChunkText inNameSpace:Smalltalk.
  6270     (p notNil and:[p ~~ #Error]) ifTrue:[
  6273     (p notNil and:[p ~~ #Error]) ifTrue:[
  6271         p isMessage ifTrue:[
  6274         p isMessage ifTrue:[
  6272             sel := p selector.
  6275             sel := p selector.
  6273             rec := p receiver.
  6276             rec := p receiver.
       
  6277             args := p args.        
  6274         ]
  6278         ]
  6275     ] ifFalse:[
  6279     ] ifFalse:[
  6276         sel := nil.
  6280         sel := nil.
  6277         (Scanner new scanTokens:fullChunkText) size == 0 ifTrue:[
  6281         (Scanner new scanTokens:fullChunkText) size == 0 ifTrue:[
  6278             "/ a comment only
  6282             "/ a comment only
  6299         ].
  6303         ].
  6300         autoCompare value ifTrue:[
  6304         autoCompare value ifTrue:[
  6301             (changeClass isNil or:[changeClass isLoaded not]) ifTrue:[
  6305             (changeClass isNil or:[changeClass isLoaded not]) ifTrue:[
  6302                 changeDelta := '?'
  6306                 changeDelta := '?'
  6303             ] ifFalse:[
  6307             ] ifFalse:[
  6304                 (changeClass comment = (p args at:1) evaluate) ifTrue:[
  6308                 (changeClass comment = (args at:1) evaluate) ifTrue:[
  6305                     changeDelta := '='.
  6309                     changeDelta := '='.
  6306                 ]
  6310                 ]
  6307             ]
  6311             ]
  6308         ].
  6312         ].
  6309         sel := nil.
  6313         "/ sel := nil.
       
  6314         ^ self.
  6310     ].
  6315     ].
  6311 
  6316 
  6312     (sel == #removeSelector:) ifTrue:[
  6317     (sel == #removeSelector:) ifTrue:[
  6313         nameAndClass := self extractClassAndClassNameFromParseTree:rec.
  6318         nameAndClass := self extractClassAndClassNameFromParseTree:rec.
  6314         clsName := nameAndClass key. changeClass := nameAndClass value.
  6319         clsName := nameAndClass key. changeClass := nameAndClass value.
  6315 
  6320 
  6316         sel := (p args at:1) evaluate.
  6321         sel := (args at:1) evaluate.
  6317         changeClassNames at:changeClassNames size put:clsName.
  6322         changeClassNames at:changeClassNames size put:clsName.
  6318 
  6323 
  6319         autoCompare value ifTrue:[
  6324         autoCompare value ifTrue:[
  6320             (changeClass isNil or:[changeClass isLoaded not]) ifTrue:[
  6325             (changeClass isNil or:[changeClass isLoaded not]) ifTrue:[
  6321                 changeDelta := '?'
  6326                 changeDelta := '?'
  6327                 ]
  6332                 ]
  6328             ]
  6333             ]
  6329         ].
  6334         ].
  6330         changeType := '(remove)'.
  6335         changeType := '(remove)'.
  6331         changeString := self contractClass:clsName selector:sel to:maxLen.
  6336         changeString := self contractClass:clsName selector:sel to:maxLen.
  6332         sel := nil.
  6337         "/ sel := nil.
       
  6338         ^ self.
  6333     ].
  6339     ].
  6334 
  6340 
  6335     (p notNil
  6341     (p notNil
  6336     and:[p ~~ #Error
  6342     and:[p ~~ #Error
  6337     and:[p isMessage
  6343     and:[p isMessage
  6355                             changeDelta := '='.
  6361                             changeDelta := '='.
  6356                         ]
  6362                         ]
  6357                     ]
  6363                     ]
  6358                 ]
  6364                 ]
  6359             ].
  6365             ].
       
  6366             ^ self.
  6360         ].
  6367         ].
  6361         (sel == #privacy:) ifTrue:[
  6368         (sel == #privacy:) ifTrue:[
  6362             sel := (rec args at:1) evaluate.
  6369             sel := (rec args at:1) evaluate.
  6363             changeType := '(privacy change)'.
  6370             changeType := '(privacy change)'.
  6364             changeString := self contractClass:clsName selector:sel to:maxLen.
  6371             changeString := self contractClass:clsName selector:sel to:maxLen.
  6368                     changeDelta := '?'
  6375                     changeDelta := '?'
  6369                 ] ifFalse:[
  6376                 ] ifFalse:[
  6370                     changeDelta := ' '
  6377                     changeDelta := ' '
  6371                 ]
  6378                 ]
  6372             ].
  6379             ].
       
  6380             ^ self.
  6373         ].
  6381         ].
  6374         sel := nil.
  6382         sel := nil.
  6375     ].
  6383     ].
  6376 
  6384 
  6377     (Class definitionSelectors includes:sel) ifTrue:[
  6385     (Class definitionSelectors includes:sel) ifTrue:[
  6378         changeType := '(class definition)'.
  6386         changeType := '(class definition)'.
  6379         clsName := (p args at:1) evaluate.
  6387         clsName := (args at:1) evaluate.
  6380         changeClassNames at:changeClassNames size put:clsName.
  6388         changeClassNames at:changeClassNames size put:clsName.
  6381 
  6389 
  6382         "/ is it a private-class ?
  6390         "/ is it a private-class ?
  6383         ('*privateIn:' match:sel) ifTrue:[
  6391         ('*privateIn:' match:sel) ifTrue:[
  6384             ownerTree := p args last.
  6392             ownerTree := args last.
  6385             ownerName := ownerTree name asString.
  6393             ownerName := ownerTree name asString.
  6386             clsName := ownerName , '::' , clsName
  6394             clsName := ownerName , '::' , clsName
  6387         ].
  6395         ].
  6388 
  6396 
  6389         changeString := clsName.
  6397         changeString := clsName.
  6409                     or:[
  6417                     or:[
  6410                         cls superclass notNil
  6418                         cls superclass notNil
  6411                         and:[p receiver isConstant not
  6419                         and:[p receiver isConstant not
  6412                         and:[cls superclass name = p receiver name]]
  6420                         and:[cls superclass name = p receiver name]]
  6413                     ]) ifTrue:[
  6421                     ]) ifTrue:[
  6414                         cls instanceVariableString asCollectionOfWords = (p args at:2) evaluate asCollectionOfWords ifTrue:[
  6422                         (sel == #'variableByteSubclass:classVariableNames:poolDictionaries:category:')
  6415                             cls classVariableString asCollectionOfWords = (p args at:3) evaluate asCollectionOfWords ifTrue:[
  6423                         ifTrue:[
  6416                                 (p args at:4) evaluate isEmpty ifTrue:[
  6424                             "/ VSE definition message
  6417                                     cls definitionSelector = (sel , 'category:')
  6425                             instVarsArg := ''.
  6418                                     ifTrue:[
  6426                             classVarsArg := (args at:2) evaluate.
  6419                                         "/ ST/V, VAge or Dolphin definition
  6427                             categoryArg := (args at:4) evaluate.
       
  6428                         ] ifFalse:[
       
  6429                             instVarsArg := (args at:2) evaluate.
       
  6430                             classVarsArg := (args at:3) evaluate.
       
  6431                             categoryArg := (args at:5) evaluate.
       
  6432                         ].
       
  6433                         cls instanceVariableString asCollectionOfWords = instVarsArg asCollectionOfWords ifTrue:[
       
  6434                             cls classVariableString asCollectionOfWords = classVarsArg asCollectionOfWords ifTrue:[
       
  6435                                 cls definitionSelector = (sel , 'category:')
       
  6436                                 ifTrue:[
       
  6437                                     "/ ST/V, VAge or Dolphin definition
       
  6438                                     changeDelta := '='.
       
  6439                                 ] ifFalse:[
       
  6440                                     cls category = categoryArg ifTrue:[
  6420                                         changeDelta := '='.
  6441                                         changeDelta := '='.
  6421                                     ] ifFalse:[
  6442                                     ] ifFalse:[
  6422                                         cls category = (p args at:5) evaluate ifTrue:[
  6443                                         changeType := '(class category change)'.
  6423                                             changeDelta := '='.
       
  6424                                         ] ifFalse:[
       
  6425                                             changeType := '(class category change)'.
       
  6426                                         ]
       
  6427                                     ]
  6444                                     ]
  6428                                 ]
  6445                                 ]
  6429                             ]
  6446                             ]
  6430                         ]
  6447                         ]
  6431                     ]
  6448                     ]
  6432                 ]
  6449                 ]
  6433             ]
  6450             ]
  6434         ].
  6451         ].
  6435         sel := nil.
  6452         "/ sel := nil.
  6436     ] ifFalse:[
  6453         ^ self.
  6437         (#(
  6454     ].
  6438           #'primitiveDefinitions:'
  6455 
  6439           #'primitiveFunctions:'
  6456     (#(
  6440           #'primitiveVariables:'
  6457       #'primitiveDefinitions:'
  6441          ) includes:sel) ifTrue:[
  6458       #'primitiveFunctions:'
  6442             changeType := '(class definition)'.
  6459       #'primitiveVariables:'
  6443             clsName := rec name.
  6460      ) includes:sel) ifTrue:[
  6444         ] ifFalse:[
  6461         changeType := '(class definition)'.
  6445             ((sel == #instanceVariableNames:)
  6462         clsName := rec name.
  6446             and:[rec isMessage
  6463         ^ self.    
  6447             and:[rec selector == #class]]) ifTrue:[
  6464     ].
  6448                 clsName := rec receiver name.
  6465 
  6449                 changeClass := (self nameSpaceForApply) classNamed:clsName.
  6466     ((sel == #instanceVariableNames:)
  6450                 changeType := '(class definition)'.
  6467     and:[rec isMessage
  6451                 changeClassNames at:changeClassNames size put:clsName.
  6468     and:[rec selector == #class]]) ifTrue:[
  6452 
  6469         clsName := rec receiver name.
  6453                 autoCompare value ifTrue:[
  6470         changeClass := (self nameSpaceForApply) classNamed:clsName.
  6454                     changeClass isNil ifTrue:[
  6471         changeType := '(class definition)'.
  6455                         changeDelta := '?'.
  6472         changeClassNames at:changeClassNames size put:clsName.
  6456                     ] ifFalse:[
  6473 
  6457                         s := (p args at:1) evaluate.
  6474         autoCompare value ifTrue:[
  6458                         s = changeClass class instanceVariableString ifTrue:[
  6475             changeClass isNil ifTrue:[
  6459                             changeDelta := '='.
  6476                 changeDelta := '?'.
  6460                         ]
  6477             ] ifFalse:[
  6461                     ]
  6478                 s := (p args at:1) evaluate.
  6462                 ].
  6479                 s = changeClass class instanceVariableString ifTrue:[
       
  6480                     changeDelta := '='.
       
  6481                 ]
  6463             ]
  6482             ]
  6464         ]
  6483         ].
       
  6484         ^ self.    
  6465     ].
  6485     ].
  6466 
  6486 
  6467     "Modified: / 14-08-2010 / 12:54:24 / cg"
  6487     "Modified: / 14-08-2010 / 12:54:24 / cg"
  6468 !
  6488 !
  6469 
  6489 
  6526 ! !
  6546 ! !
  6527 
  6547 
  6528 !ChangesBrowser class methodsFor:'documentation'!
  6548 !ChangesBrowser class methodsFor:'documentation'!
  6529 
  6549 
  6530 version
  6550 version
  6531     ^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.465 2015-01-04 19:00:04 cg Exp $'
  6551     ^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.466 2015-01-12 21:17:09 cg Exp $'
  6532 !
  6552 !
  6533 
  6553 
  6534 version_CVS
  6554 version_CVS
  6535     ^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.465 2015-01-04 19:00:04 cg Exp $'
  6555     ^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.466 2015-01-12 21:17:09 cg Exp $'
  6536 ! !
  6556 ! !
  6537 
  6557