--- a/ChangesBrowser.st Wed Dec 06 13:39:56 1995 +0100
+++ b/ChangesBrowser.st Wed Dec 06 17:14:40 1995 +0100
@@ -557,12 +557,13 @@
"Modified: 3.12.1995 / 14:14:55 / cg"
!
-classNameOfChange:changeNr
- "return the classname of a change (for xxx class - changes xxx is returned)
+fullClassNameOfChange:changeNr
+ "return the full classname of a change
+ (for classChanges (i.e. xxx class), a string ending in ' class' is returned.
- since parsing ascii methods is slow, keep result cached in
changeClassNames for the next query"
- |chunk aParseTree recTree sel name arg1Tree|
+ |chunk aParseTree recTree sel name arg1Tree isMeta|
changeNr isNil ifTrue:[^ nil].
@@ -625,13 +626,18 @@
yes, the className is the receiver
"
(recTree notNil and:[recTree ~~ #Error]) ifTrue:[
+ isMeta := false.
recTree isUnaryMessage ifTrue:[
(recTree selector ~~ #class) ifTrue:[^ nil].
"id class methodsFor:..."
- recTree := recTree receiver
+ recTree := recTree receiver.
+ isMeta := true.
].
recTree isPrimary ifTrue:[
name := recTree name.
+ isMeta ifTrue:[
+ name := name , ' class'.
+ ].
changeClassNames at:changeNr put:name.
^ name
]
@@ -680,6 +686,7 @@
and:[recTree ~~ #Error
and:[recTree isMessage
and:[recTree selector == #compiledMethodAt:]]]) ifTrue:[
+ isMeta := false.
recTree := recTree receiver.
recTree isUnaryMessage ifTrue:[
(recTree selector ~~ #class) ifTrue:[^ nil].
@@ -687,6 +694,9 @@
recTree := recTree receiver
].
recTree isPrimary ifTrue:[
+ isMeta ifTrue:[
+ name := name , ' class'.
+ ].
name := recTree name.
changeClassNames at:changeNr put:name.
^ name
@@ -694,6 +704,24 @@
]
].
^ nil
+
+ "Modified: 6.12.1995 / 17:08:22 / cg"
+!
+
+classNameOfChange:changeNr
+ "return the classname of a change
+ (for classChanges (i.e. xxx class), the non-metaClassName (i.e. xxx) is returned)"
+
+ |name|
+
+ name := self fullClassNameOfChange:changeNr.
+ name isNil ifTrue:[^ nil].
+ (name endsWith:' class') ifTrue:[
+ ^ name copyWithoutLast:6
+ ].
+ ^ name
+
+ "Modified: 6.12.1995 / 17:06:31 / cg"
!
clearCodeView
@@ -1492,13 +1520,21 @@
doBrowse
"user wants a browser on the class of a change"
- |changeNr className cls|
+ |changeNr className cls isMeta|
changeNr := changeListView selection.
changeNr notNil ifTrue:[
- className := self classNameOfChange:changeNr.
+ className := self fullClassNameOfChange:changeNr.
className notNil ifTrue:[
+ isMeta := false.
+ (className endsWith:' class') ifTrue:[
+ className := className copyWithoutLast:6.
+ isMeta := true.
+ ].
(cls := Smalltalk classNamed:className) notNil ifTrue:[
+ isMeta ifTrue:[
+ cls := cls class
+ ].
SystemBrowser
openInClass:cls
selector:(self selectorOfMethodChange:changeNr)
@@ -1507,6 +1543,7 @@
]
"Created: 24.11.1995 / 23:13:24 / cg"
+ "Modified: 6.12.1995 / 17:09:26 / cg"
!
doCompare
@@ -1943,4 +1980,4 @@
!ChangesBrowser class methodsFor:'documentation'!
version
-^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.57 1995-12-03 23:08:30 cg Exp $'! !
+^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.58 1995-12-06 16:14:40 cg Exp $'! !