#BUGFIX by stefan
authorStefan Vogel <sv@exept.de>
Tue, 12 Mar 2019 19:15:35 +0100
changeset 23873 58b25e1974cc
parent 23872 797b496386f8
child 23874 68c2a6bd0507
#BUGFIX by stefan class: Smalltalk class changed: #basicLoadPackage:fromDirectory:asAutoloaded: #loadPackage:fromDirectory:asAutoloaded: fix PackageNotCompatibleError handling (reject)
Smalltalk.st
--- 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