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 |
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 := '?' |
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 |