--- a/Autoload.st Thu Aug 17 09:50:54 2006 +0200
+++ b/Autoload.st Thu Aug 17 09:54:53 2006 +0200
@@ -280,7 +280,8 @@
- it is defined a noop in all non-autoloading classes.
Return the loaded class"
- |myName myNameSpace newClass project prevMode package|
+ |myName myNameSpace newClass project prevMode packageID
+ packageDefinitionClass|
myName := self name asSymbol.
myNameSpace := self nameSpace.
@@ -323,6 +324,19 @@
Transcript showCR:('autoloading ', myName , ' ...'); endEntry.
].
+ packageID := self package.
+ "is there a package-definition ?"
+ packageDefinitionClass := ProjectDefinition definitionClassForPackage: packageID.
+ (packageDefinitionClass notNil) ifTrue:[
+ (packageDefinitionClass ~~ self) ifTrue:[
+ (packageDefinitionClass isBehavior) ifTrue:[
+ (packageDefinitionClass isLoaded) ifFalse:[
+ packageDefinitionClass autoload.
+ ].
+ ].
+ ].
+ ].
+
[
InProgressClasses add:myName.
@@ -340,16 +354,15 @@
Project setProject:nil.
].
- package := self package.
Class nameSpaceQuerySignal answer:myNameSpace "Smalltalk"
do:[
- Class packageQuerySignal answer:package
+ Class packageQuerySignal answer:packageID
do:[
Class classConventionViolationConfirmationQuerySignal answer:true
do:[
(Smalltalk
fileInClass:myName
- package:package
+ package:packageID
initialize:false
lazy:LazyLoading
silent:nil)
@@ -357,12 +370,11 @@
"/ temporary: try without stx/package prefix
"/ this will vanish as soon as source-directory
"/ is always guaranteed to contain an stx-subtree
- ((package startsWith:'stx/')
- or:[package startsWith:'stx:']) ifTrue:[
- package := package copyFrom:5.
+ ((packageID startsWith:'stx/')
+ or:[packageID startsWith:'stx:']) ifTrue:[
Smalltalk
fileInClass:myName
- package:package
+ package:(packageID copyFrom:5)
initialize:false
lazy:LazyLoading
silent:nil.
@@ -419,7 +431,7 @@
^ nil
].
- newClass setPackage:package.
+ newClass setPackage:packageID.
newClass instAndClassSelectorsAndMethodsDo:[:sel :mthd | mthd setPackage:package].
"/
@@ -464,7 +476,7 @@
self changed:#loaded with:newClass.
^ newClass
- "Modified: / 05-07-2006 / 15:35:56 / cg"
+ "Modified: / 17-08-2006 / 09:55:01 / cg"
! !
!Autoload class methodsFor:'message catching'!
@@ -883,7 +895,7 @@
!Autoload class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.135 2006-08-11 09:01:16 ca Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.136 2006-08-17 07:54:53 cg Exp $'
! !
Autoload initialize!