--- a/Project.st Sat Jan 22 17:42:15 2000 +0100
+++ b/Project.st Sat Jan 22 18:52:11 2000 +0100
@@ -1128,7 +1128,14 @@
package:self package
revision:nil
] ifFalse:[
- Smalltalk fileIn:clsFilename
+ Object errorSignal handle:[:ex |
+ self warn:'error during fileIn: ' , ex errorString
+ ] do:[
+ Class packageQuerySignal answer:packageName do:[
+ clsFilename fileIn.
+ "/ Smalltalk fileIn:clsFilename
+ ]
+ ]
]
]
] ifFalse:[
@@ -1354,9 +1361,11 @@
s tab. s nextPutLine:(self package storeString).
defNS := self defaultNameSpace.
- (defNS ~~ Smalltalk) ifTrue:[
+ (defNS notNil and:[defNS ~~ Smalltalk]) ifTrue:[
s nextPutAll:'nameSpace'.
s tab. s nextPutLine:(defNS name storeString).
+ ] ifFalse:[
+ defNS := nil.
].
s nextPutAll:'
@@ -1494,19 +1503,41 @@
s nextPutLine:'#( \'.
"/ find the longest className (for layout only)
- maxLen := classes inject:0 into:[:maxSoFar :aClass |
+ maxLen := classes inject:0 into:[:maxSoFar :aClassOrName |
|clsName|
- clsName := aClass name.
+ aClassOrName isBehavior ifTrue:[
+ clsName := aClassOrName name.
+ ] ifFalse:[
+ clsName := aClassOrName.
+ defNS notNil ifTrue:[
+ (clsName startsWith:(defNS name , '::')) ifFalse:[
+ clsName := (defNS name , '::' , clsName)
+ ]
+ ].
+ clsName := clsName asSymbol.
+ ].
maxSoFar max:clsName storeString size
].
- classes do:[:aClass |
+ classes do:[:aClassOrName |
|clsInfo clsName fileName cond|
- clsInfo := self classInfoFor:aClass.
-
- clsName := aClass name.
+ aClassOrName isBehavior ifTrue:[
+ clsName := aClassOrName name.
+ ] ifFalse:[
+ clsName := aClassOrName.
+ defNS notNil ifTrue:[
+ (clsName startsWith:(defNS name , '::')) ifFalse:[
+ clsName := (defNS name , '::' , clsName)
+ ]
+ ].
+ clsName := clsName asSymbol.
+ ].
+ clsInfo := self classInfoFor:clsName.
+ clsInfo isNil ifTrue:[
+ clsInfo := self classInfoFor:aClassOrName.
+ ].
fileName := clsInfo classFileName.
fileName = (clsName , '.st') ifTrue:[
fileName := nil
@@ -1643,13 +1674,13 @@
!
classesInOrderFor:whatMsg
- |classes numBad firstBad msg|
-
- classes := self classes.
+ |classesOrNames classes numBad firstBad msg|
+
+ classesOrNames := self classes.
numBad := 0.
firstBad := nil.
- classes := classes collect:[:clsOrSymbol | |cls|
+ classes := classesOrNames collect:[:clsOrSymbol | |cls|
clsOrSymbol isBehavior ifFalse:[
cls := Smalltalk at:clsOrSymbol asSymbol.
cls isNil ifTrue:[
@@ -1657,7 +1688,7 @@
firstBad := firstBad ? clsOrSymbol.
] ifFalse:[
cls isLoaded ifFalse:[
- cls autoLoad.
+ cls := cls autoLoad.
cls isLoaded ifFalse:[
cls := nil
]
@@ -1669,14 +1700,15 @@
]
].
numBad ~~ 0 ifTrue:[
- msg := 'Cannot ' , whatMsg.
- msg := msg , 'Reason: Class ''' , firstBad asText allBold
+ msg := 'Cannot determine load/compile order when about to ' , whatMsg.
+ msg := msg , '\Reason: Class ''' , firstBad asText allBold
, ''' is not loaded.'.
numBad ~~ 1 ifTrue:[
msg := msg , '\(' , (numBad-1) printString , ' more unloaded classes were found)'
].
+ msg := msg , '\\You will have to manually load the classes or edit the project file.'.
self warn:msg withCRs.
- ^ nil.
+ ^ classesOrNames.
].
"/ to not list private classes
@@ -3547,6 +3579,6 @@
!Project class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Project.st,v 1.144 2000-01-19 15:59:59 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Project.st,v 1.145 2000-01-22 17:52:11 cg Exp $'
! !
Project initialize!