care for private classes when extracting a className
authorClaus Gittinger <cg@exept.de>
Mon, 18 Aug 1997 16:45:24 +0200
changeset 1293 0ce8e42c09ea
parent 1292 7e1f3a7c65ab
child 1294 dfdbf3c82a39
care for private classes when extracting a className
CBrowser.st
ChangesBrowser.st
--- a/CBrowser.st	Mon Aug 18 15:48:20 1997 +0200
+++ b/CBrowser.st	Mon Aug 18 16:45:24 1997 +0200
@@ -980,7 +980,7 @@
        changeClassNames for the next query"
 
     |chunk aParseTree recTree sel name arg1Tree isMeta prevMethodDefNr
-     words|
+     words changeStream fullParseTree ownerTree ownerName |
 
     changeNr isNil ifTrue:[^ nil].
 
@@ -1084,9 +1084,37 @@
     "
     (('subclass:*' match:sel) 
     or:[('variable*subclass:*' match:sel)]) ifTrue:[
+        "/ must parse the full changes text, to get
+        "/ privacy information.
+
+        changeStream := self streamForChange:changeNr.
+        changeStream notNil ifTrue:[
+            chunk := changeStream nextChunk.
+            changeStream close.
+            fullParseTree := Parser parseExpression:chunk.
+            (fullParseTree isNil or:[fullParseTree == #Error]) ifTrue:[
+                fullParseTree := nil
+            ].
+            fullParseTree isMessage ifFalse:[
+                fullParseTree := nil
+            ].
+            "/ actually, the nil case cannot happen
+            fullParseTree notNil ifTrue:[
+                aParseTree := fullParseTree.
+                sel := aParseTree selector.
+            ].
+        ].
+
         arg1Tree := aParseTree arg1.
         (arg1Tree notNil and:[arg1Tree isConstant]) ifTrue:[
             name := arg1Tree value asString.
+
+            "/ is it a private-class ?
+            ('*privateIn:' match:sel) ifTrue:[
+                ownerTree := aParseTree args last.
+                ownerName := ownerTree name asString.
+                name := ownerName , '::' , name
+            ].
             changeClassNames at:changeNr put:name.
             ^ name
         ].
@@ -1139,7 +1167,7 @@
     ].
     ^ nil
 
-    "Modified: 14.2.1997 / 19:37:18 / cg"
+    "Modified: 18.8.1997 / 16:43:14 / cg"
 !
 
 makeChangeAPatch:changeNr
@@ -2555,5 +2583,5 @@
 !ChangesBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Attic/CBrowser.st,v 1.115 1997-08-05 21:14:50 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Attic/CBrowser.st,v 1.116 1997-08-18 14:45:24 cg Exp $'
 ! !
--- a/ChangesBrowser.st	Mon Aug 18 15:48:20 1997 +0200
+++ b/ChangesBrowser.st	Mon Aug 18 16:45:24 1997 +0200
@@ -980,7 +980,7 @@
        changeClassNames for the next query"
 
     |chunk aParseTree recTree sel name arg1Tree isMeta prevMethodDefNr
-     words|
+     words changeStream fullParseTree ownerTree ownerName |
 
     changeNr isNil ifTrue:[^ nil].
 
@@ -1084,9 +1084,37 @@
     "
     (('subclass:*' match:sel) 
     or:[('variable*subclass:*' match:sel)]) ifTrue:[
+        "/ must parse the full changes text, to get
+        "/ privacy information.
+
+        changeStream := self streamForChange:changeNr.
+        changeStream notNil ifTrue:[
+            chunk := changeStream nextChunk.
+            changeStream close.
+            fullParseTree := Parser parseExpression:chunk.
+            (fullParseTree isNil or:[fullParseTree == #Error]) ifTrue:[
+                fullParseTree := nil
+            ].
+            fullParseTree isMessage ifFalse:[
+                fullParseTree := nil
+            ].
+            "/ actually, the nil case cannot happen
+            fullParseTree notNil ifTrue:[
+                aParseTree := fullParseTree.
+                sel := aParseTree selector.
+            ].
+        ].
+
         arg1Tree := aParseTree arg1.
         (arg1Tree notNil and:[arg1Tree isConstant]) ifTrue:[
             name := arg1Tree value asString.
+
+            "/ is it a private-class ?
+            ('*privateIn:' match:sel) ifTrue:[
+                ownerTree := aParseTree args last.
+                ownerName := ownerTree name asString.
+                name := ownerName , '::' , name
+            ].
             changeClassNames at:changeNr put:name.
             ^ name
         ].
@@ -1139,7 +1167,7 @@
     ].
     ^ nil
 
-    "Modified: 14.2.1997 / 19:37:18 / cg"
+    "Modified: 18.8.1997 / 16:43:14 / cg"
 !
 
 makeChangeAPatch:changeNr
@@ -2555,5 +2583,5 @@
 !ChangesBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.115 1997-08-05 21:14:50 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.116 1997-08-18 14:45:24 cg Exp $'
 ! !