checkin from browser
authorClaus Gittinger <cg@exept.de>
Fri, 17 Sep 1999 15:46:08 +0200
changeset 4752 84c4de5b3f64
parent 4751 174a92d4ba3f
child 4753 214fc4e89e7a
checkin from browser
Class.st
--- a/Class.st	Fri Sep 17 15:37:50 1999 +0200
+++ b/Class.st	Fri Sep 17 15:46:08 1999 +0200
@@ -3718,7 +3718,7 @@
 sourceStreamFor:source
     "return an open stream on a sourcefile, nil if that is not available"
 
-    |owner fileName aStream mgr validated guessedFileName|
+    |owner fileName aStream mgr validated guessedFileName sep mod dir|
 
     (owner := self owningClass) notNil ifTrue:[^ owner sourceStreamFor:source].
     validated := false.
@@ -3772,22 +3772,30 @@
         "/ standard places
 
         mgr notNil ifTrue:[
-            classFilename isNil ifTrue:[
-                classFilename := guessedFileName := (Smalltalk fileNameForClass:self) , '.st'.
+            sep := self package indexOfAny:'/\:'.
+            sep ~~ 0 ifTrue:[
+                mod := package copyTo:sep - 1.
+                dir := package copyFrom:sep + 1.
+                aStream := mgr streamForClass:nil fileName:source revision:nil directory:dir module:mod cache:true.
             ].
-            source asFilename baseName = classFilename asFilename baseName ifTrue:[
-                aStream := mgr getSourceStreamFor:self.
-                aStream notNil ifTrue:[
-                    (self validateSourceStream:aStream) ifFalse:[
-                        ('Class [info]: repositories source for `' 
-                         , (self isMeta ifTrue:[self soleInstance name]
-                                        ifFalse:[name])
-                         , ''' is invalid.') infoPrintCR.
-                        aStream close.
-                        aStream := nil
-                    ] ifTrue:[
-                        validated := true.
-                    ].
+            aStream isNil ifTrue:[
+                classFilename isNil ifTrue:[
+                    classFilename := guessedFileName := (Smalltalk fileNameForClass:self) , '.st'.
+                ].
+                source asFilename baseName = classFilename asFilename baseName ifTrue:[
+                    aStream := mgr getSourceStreamFor:self.
+                ]
+            ].
+            aStream notNil ifTrue:[
+                (self validateSourceStream:aStream) ifFalse:[
+                    ('Class [info]: repositories source for `' 
+                     , (self isMeta ifTrue:[self soleInstance name]
+                                    ifFalse:[name])
+                     , ''' is invalid.') infoPrintCR.
+                    aStream close.
+                    aStream := nil
+                ] ifTrue:[
+                    validated := true.
                 ].
             ].
 
@@ -3985,5 +3993,5 @@
 !Class class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.355 1999-09-17 11:34:48 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.356 1999-09-17 13:46:08 cg Exp $'
 ! !