# HG changeset patch # User Claus Gittinger # Date 922708658 -7200 # Node ID a17a530bb089af441ec14701000ee07046e52bbb # Parent eaf185681d854314bf072924e3e5b36655c0ef3e fixed fileIn of autoloaded class via CVS diff -r eaf185681d85 -r a17a530bb089 AbstrSCMgr.st --- a/AbstrSCMgr.st Fri Mar 19 23:28:21 1999 +0100 +++ b/AbstrSCMgr.st Mon Mar 29 13:57:38 1999 +0200 @@ -809,6 +809,21 @@ (not knowing anything about its version). Used when autoloading classes." + ^ self + getMostRecentSourceStreamForClassNamed:aClassName + inPackage:nil +! + +getMostRecentSourceStreamForClassNamed:aClassName inPackage:forcedPackage + "given a class, return an open stream to its most recent source + (not knowing anything about its version). + Used when autoloading classes or to compare a classes source with the most + recent found in the repostitory. + The forcePackage argument passes the classes package information + and is only required when autoloading or when the class is not already + present (i.e. there is no way to extract the package info). + If nil, the package is extracted from the class - which must exist." + |cls sourceInfo classFileName packageDir moduleDir s m components| cls := Smalltalk classNamed:aClassName. @@ -822,15 +837,19 @@ ] ifFalse:[ classFileName := (Smalltalk fileNameForClass:aClassName) , '.st'. packageDir := Smalltalk sourceDirectoryNameOfClass:aClassName. - (packageDir startsWith:'stx/') ifTrue:[ + (packageDir notNil and:[packageDir startsWith:'stx/']) ifTrue:[ packageDir := packageDir copyFrom:5. ]. moduleDir := 'stx'. ]. packageDir isNil ifTrue:[ - 'SourceCodeManager [warning]: could not extract packageDir' errorPrintCR. - ^ nil + forcedPackage isNil ifTrue:[ + 'SourceCodeManager [warning]: could not extract packageDir' errorPrintCR. + ^ nil + ]. + packageDir := forcedPackage copyFrom:(forcedPackage indexOf:$/) + 1. + moduleDir := forcedPackage copyTo:(forcedPackage indexOf:$/) - 1. ]. s := self @@ -1102,7 +1121,7 @@ ^ nil " - SourceCodeManager revisionInfoFromString:'$Revision: 1.90 $' + SourceCodeManager revisionInfoFromString:'$Revision: 1.91 $' SourceCodeManager revisionInfoFromString:(SourceCodeManager version) " @@ -1438,6 +1457,6 @@ !AbstractSourceCodeManager class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libbasic3/Attic/AbstrSCMgr.st,v 1.90 1999-03-19 22:28:21 cg Exp $' + ^ '$Header: /cvs/stx/stx/libbasic3/Attic/AbstrSCMgr.st,v 1.91 1999-03-29 11:57:38 cg Exp $' ! ! AbstractSourceCodeManager initialize! diff -r eaf185681d85 -r a17a530bb089 AbstractSourceCodeManager.st --- a/AbstractSourceCodeManager.st Fri Mar 19 23:28:21 1999 +0100 +++ b/AbstractSourceCodeManager.st Mon Mar 29 13:57:38 1999 +0200 @@ -809,6 +809,21 @@ (not knowing anything about its version). Used when autoloading classes." + ^ self + getMostRecentSourceStreamForClassNamed:aClassName + inPackage:nil +! + +getMostRecentSourceStreamForClassNamed:aClassName inPackage:forcedPackage + "given a class, return an open stream to its most recent source + (not knowing anything about its version). + Used when autoloading classes or to compare a classes source with the most + recent found in the repostitory. + The forcePackage argument passes the classes package information + and is only required when autoloading or when the class is not already + present (i.e. there is no way to extract the package info). + If nil, the package is extracted from the class - which must exist." + |cls sourceInfo classFileName packageDir moduleDir s m components| cls := Smalltalk classNamed:aClassName. @@ -822,15 +837,19 @@ ] ifFalse:[ classFileName := (Smalltalk fileNameForClass:aClassName) , '.st'. packageDir := Smalltalk sourceDirectoryNameOfClass:aClassName. - (packageDir startsWith:'stx/') ifTrue:[ + (packageDir notNil and:[packageDir startsWith:'stx/']) ifTrue:[ packageDir := packageDir copyFrom:5. ]. moduleDir := 'stx'. ]. packageDir isNil ifTrue:[ - 'SourceCodeManager [warning]: could not extract packageDir' errorPrintCR. - ^ nil + forcedPackage isNil ifTrue:[ + 'SourceCodeManager [warning]: could not extract packageDir' errorPrintCR. + ^ nil + ]. + packageDir := forcedPackage copyFrom:(forcedPackage indexOf:$/) + 1. + moduleDir := forcedPackage copyTo:(forcedPackage indexOf:$/) - 1. ]. s := self @@ -1102,7 +1121,7 @@ ^ nil " - SourceCodeManager revisionInfoFromString:'$Revision: 1.90 $' + SourceCodeManager revisionInfoFromString:'$Revision: 1.91 $' SourceCodeManager revisionInfoFromString:(SourceCodeManager version) " @@ -1438,6 +1457,6 @@ !AbstractSourceCodeManager class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.90 1999-03-19 22:28:21 cg Exp $' + ^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.91 1999-03-29 11:57:38 cg Exp $' ! ! AbstractSourceCodeManager initialize!