#BUGFIX by stefan
class: Smalltalk class
changed:
#basicLoadPackage:fromDirectory:asAutoloaded:
#loadPackage:fromDirectory:asAutoloaded:
fix PackageNotCompatibleError handling (reject)
--- a/Smalltalk.st Tue Mar 12 18:37:44 2019 +0100
+++ b/Smalltalk.st Tue Mar 12 19:15:35 2019 +0100
@@ -2550,20 +2550,20 @@
inDirectory:packageDirOrNil.
(binaryClassLibraryFilename notNil and:[binaryClassLibraryFilename exists]) ifTrue:[
- |loadErrorOccurred incompatible|
-
- loadErrorOccurred := incompatible := loadOK := false.
- PackageNotCompatibleError handle:[:ex |
- incompatible := loadErrorOccurred := true.
- ] do:[
- ObjectFileLoader objectFileLoadErrorNotification handle:[:ex |
- loadErrorOccurred := true.
- ex proceedWith:true.
- ] do:[
- loadOK := (ObjectFileLoader loadObjectFile:binaryClassLibraryFilename) notNil.
- "/ loadOK := self loadPackage:aPackageString fromClassLibrary:binaryClassLibraryFilename.
- ].
+ |loadErrorOccurred|
+
+ loadErrorOccurred := loadOK := false.
+
+ [
+ loadOK := (ObjectFileLoader loadObjectFile:binaryClassLibraryFilename) notNil.
+ "/ loadOK := self loadPackage:aPackageString fromClassLibrary:binaryClassLibraryFilename.
+ ] on:PackageNotCompatibleError do:[:ex|
+ ex reject.
+ ] on:ObjectFileLoader objectFileLoadErrorNotification do:[:ex|
+ loadErrorOccurred := true.
+ ex proceedWith:true.
].
+
(loadOK and:[loadErrorOccurred not]) ifTrue:[
"now, all compiled classes have been loaded.
keep classes in the package which are autoloaded as autoloaded."
@@ -2572,14 +2572,12 @@
loadErrorOccurred ifTrue:[
self breakPoint:#cg.
- incompatible ifFalse:[
- projectDefinitionClass := ProjectDefinition definitionClassForPackage:aPackageString.
- projectDefinitionClass notNil ifTrue:[
- projectDefinitionClass
- checkForLoad;
- loadPreRequisitesAsAutoloaded:doLoadAsAutoloaded.
- ].
- ].
+ projectDefinitionClass := ProjectDefinition definitionClassForPackage:aPackageString.
+ projectDefinitionClass notNil ifTrue:[
+ projectDefinitionClass
+ checkForLoad;
+ loadPreRequisitesAsAutoloaded:doLoadAsAutoloaded.
+ ].
].
].
packageDirOrNil isNil ifTrue:[
@@ -2660,6 +2658,7 @@
"Modified: / 29-07-2011 / 19:55:35 / cg"
"Modified (comment): / 19-02-2019 / 16:34:46 / Claus Gittinger"
+ "Modified: / 12-03-2019 / 18:44:50 / Stefan Vogel"
!
loadExtensionsForPackage:aPackageId
@@ -2950,18 +2949,17 @@
The package is either located in packageDirOrStringOrNil, or in the current directory (if nil).
Answer true, if the load succeeded, false if it failed"
- |ret|
-
- PackageLoadInProgressQuery
- answerNotifyLoading:aPackageString asSymbol
- do:[
- ret := self basicLoadPackage:aPackageString fromDirectory:packageDirOrStringOrNil asAutoloaded:doLoadAsAutoloaded
- ].
- ^ ret
+ ^ PackageLoadInProgressQuery
+ answerNotifyLoading:aPackageString asSymbol
+ do:[
+ self basicLoadPackage:aPackageString fromDirectory:packageDirOrStringOrNil asAutoloaded:doLoadAsAutoloaded
+ ].
"
Smalltalk loadPackage:'stx:goodies/communication'
"
+
+ "Modified: / 12-03-2019 / 17:51:58 / Stefan Vogel"
!
loadPackage:packageId fromLoadAllFile:aFilename