class: VersionDiffBrowser
comment/format in:
#classBeingCompared
#updateLists
changed: #printStringForChange:
care for classname in list if two diferent classes are
compared.
--- a/VersionDiffBrowser.st Tue Jul 09 11:42:21 2013 +0200
+++ b/VersionDiffBrowser.st Tue Jul 09 13:33:38 2013 +0200
@@ -28,7 +28,8 @@
!
HierarchicalItem subclass:#ClassChangeSet
- instanceVariableNames:'classBeingCompared labelA labelB diffSet versionA versionB'
+ instanceVariableNames:'class1BeingCompared class2BeingCompared labelA labelB diffSet
+ versionA versionB'
classVariableNames:''
poolDictionaries:''
privateIn:VersionDiffBrowser
@@ -830,8 +831,7 @@
!
classBeingCompared
- "
- gets the class from the change set which is compared.
+ "returns the class from the change set which is compared.
<return: Class>
"
@@ -1758,7 +1758,13 @@
|m changeClassName classOrMetaString useChangesString selectorString
singleComparedClass singleComparedClassesName singleComparedMetaclassesName
- printString|
+ printString class1 class2|
+
+(aChange isMethodChange and:[aChange selector == #defaultResumeValue]) ifTrue:[
+self halt
+].
+ class1 := self classChangeSet class1BeingCompared.
+ class2 := self classChangeSet class2BeingCompared.
(singleComparedClass := self classBeingCompared) notNil ifTrue:[
singleComparedClassesName := singleComparedClass name.
@@ -1783,16 +1789,22 @@
useChangesString := false.
classOrMetaString := ''.
- (changeClassName = singleComparedClassesName) ifTrue:[
- "/ changeClassName := ''.
- useChangesString := true.
+ (class1 notNil
+ and:[ class2 notNil
+ and:[ class1 ~= class2 ]]) ifTrue:[
+ changeClassName := ''.
] ifFalse:[
- (changeClassName = singleComparedMetaclassesName) ifTrue:[
- "/ classOrMetaString := ' class'.
+ (changeClassName = singleComparedClassesName) ifTrue:[
+ "/ changeClassName := ''.
useChangesString := true.
] ifFalse:[
- ((changeClassName includes:$:) and:[ changeClassName startsWith:((singleComparedClassesName ? ''),'::') ]) ifTrue:[
- changeClassName := changeClassName copyFrom:(singleComparedClassesName,'::') size+1.
+ (changeClassName = singleComparedMetaclassesName) ifTrue:[
+ "/ classOrMetaString := ' class'.
+ useChangesString := true.
+ ] ifFalse:[
+ ((changeClassName includes:$:) and:[ changeClassName startsWith:((singleComparedClassesName ? ''),'::') ]) ifTrue:[
+ changeClassName := changeClassName copyFrom:(singleComparedClassesName,'::') size+1.
+ ].
].
].
].
@@ -1800,6 +1812,7 @@
selectorString := ''.
(aChange isMethodChange) ifTrue:[
selectorString := aChange selector.
+
aChange changeClass notNil ifTrue:[
m := aChange changeMethod.
m notNil ifTrue:[
@@ -1897,6 +1910,10 @@
!
updateLists
+ "walk over the changeSet and setup the 3 lists:
+ onlyInA, changed, onlyInB,
+ Optionally filter extensions, categoryChanges and versionMethods"
+
|classChangeSet listOnlyInA listOnlyInB listChanged
printStringGenerator sortBlockForChangeLists filteredList
isIgnoredChange numIgnoredExtensions numIgnoredVersionMethods
@@ -2152,7 +2169,7 @@
|aStream sourceA sourceB theChangeSetA theChangeSetB theClassChangeSet|
theClassChangeSet := self new.
- theClassChangeSet classBeingCompared:classA.
+ theClassChangeSet class1BeingCompared:classA class2BeingCompared:classB.
theClassChangeSet labelA:aLabelA.
theClassChangeSet labelB:aLabelB.
@@ -2169,25 +2186,25 @@
theChangeSetA:=self changeSetForClass:classA andSource:sourceA.
theChangeSetB:=self changeSetForClass:classB andSource:sourceB.
theChangeSetA isNil
- ifTrue: [theChangeSetA := ChangeSet new].
+ ifTrue: [theChangeSetA := ChangeSet new].
theChangeSetB isNil
- ifTrue: [theChangeSetB := ChangeSet new].
+ ifTrue: [theChangeSetB := ChangeSet new].
"/ just in case (if comparing a class against another),
"/ unify the classes of the changes (to avoid that all changes are detected as different)
theChangeSetB do:[:eachChange |
- eachChange isMethodChange ifTrue:[
- eachChange changeClass isMeta ifTrue:[
- eachChange changeClass ~~ classA theMetaclass ifTrue:[
- eachChange changeClass:classA theMetaclass.
- ]
- ] ifFalse:[
- eachChange changeClass ~~ classA theNonMetaclass ifTrue:[
- eachChange changeClass:classA theNonMetaclass.
- ]
- ].
- ].
+ eachChange isMethodChange ifTrue:[
+ eachChange changeClass isMeta ifTrue:[
+ eachChange changeClass ~~ classA theMetaclass ifTrue:[
+ eachChange changeClass:classA theMetaclass.
+ ]
+ ] ifFalse:[
+ eachChange changeClass ~~ classA theNonMetaclass ifTrue:[
+ eachChange changeClass:classA theNonMetaclass.
+ ]
+ ].
+ ].
].
"/ remove all #initialize doIts
theChangeSetA := theChangeSetA select:[:eachChange | eachChange isDoIt not or:[eachChange isInitialize not]].
@@ -2300,16 +2317,35 @@
!VersionDiffBrowser::ClassChangeSet methodsFor:'accessing'!
+class1BeingCompared
+ "returns the class which is compared"
+
+ ^ class1BeingCompared
+!
+
+class1BeingCompared:class1 class2BeingCompared:class2
+ "returns the class which is compared"
+
+ class1BeingCompared := class1.
+ class2BeingCompared := class2
+!
+
+class2BeingCompared
+ "returns the class which is compared"
+
+ ^ class2BeingCompared
+!
+
classBeingCompared
- "returns the value of the class which is compared"
-
- ^ classBeingCompared
+ "returns the class which is compared"
+
+ ^ class1BeingCompared
!
classBeingCompared:something
"set the value of the class which is compared"
- classBeingCompared := something.
+ class1BeingCompared := class2BeingCompared := something.
!
diffSet
@@ -2448,10 +2484,10 @@
!VersionDiffBrowser class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.113 2013-06-06 17:12:57 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.114 2013-07-09 11:33:38 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.113 2013-06-06 17:12:57 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.114 2013-07-09 11:33:38 cg Exp $'
! !