Autoload.st
changeset 13288 c525954778c6
parent 12791 f05a918e7e57
child 14410 3c6d55f3bada
--- a/Autoload.st	Tue Feb 08 10:04:09 2011 +0100
+++ b/Autoload.st	Tue Feb 08 20:03:57 2011 +0100
@@ -760,14 +760,47 @@
     ^ LoadedClasses includes:aClass
 ! !
 
+!Autoload class methodsFor:'utilities'!
+
+withClass:aClass loadedDo:aBlock
+    "ensure that aClass is loaded, while evaluating aBlock for it"
+
+    |wasLoaded loadedClass|
+
+    wasLoaded := aClass isLoaded.
+    wasLoaded ifTrue:[  
+        ^ aBlock value:aClass
+    ].
+
+    ParserFlags 
+        withSTCCompilation:#never 
+        do:[
+            loadedClass := aClass autoload.
+        ].
+
+
+    ^ [
+        aBlock value:loadedClass
+      ] ensure:[
+        aClass unload
+      ]
+
+    "
+     Autoload withClass:Array loadedDo:[:cls | self assert:cls isLoaded]
+     Autoload withClass:Cons loadedDo:[:cls | self assert:cls isLoaded]
+    "
+
+    "Created: / 08-02-2011 / 20:01:32 / cg"
+! !
+
 !Autoload class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.157 2010-03-13 11:36:57 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.158 2011-02-08 19:03:57 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.157 2010-03-13 11:36:57 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.158 2011-02-08 19:03:57 cg Exp $'
 ! !
 
 Autoload initialize!