diff -r 295728e8f410 -r a1892eeca6c0 Autoload.st --- a/Autoload.st Fri Aug 28 12:38:51 2009 +0100 +++ b/Autoload.st Sat Oct 24 16:48:19 2009 +0100 @@ -9,6 +9,8 @@ other person. No title to or ownership of the software is hereby transferred. " +'From Smalltalk/X, Version:5.4.6 on 14-10-2009 at 10:26:50' ! + "{ Package: 'stx:libbasic' }" nil subclass:#Autoload @@ -86,27 +88,32 @@ !Autoload class methodsFor:'initialization'! initialize - "initialize the failure-signal" + "initialize either the Autoload class + or load a autoloaded class and initialize it." + self ~~ Autoload ifTrue:[ + "subclass: catch initialize - load the class and resend #initialize to the real one" + ^ self doesNotUnderstand:(Message selector:#initialize) + ]. + + "initialize myself" AutoloadFailedSignal isNil ifTrue:[ LazyLoading := false. - AutoloadFailedSignal := Error newSignalMayProceed:true. - AutoloadFailedSignal nameClass:self message:#autoloadFailedSignal. - AutoloadFailedSignal notifierString:'autoload failed'. + AutoloadFailedSignal := ProceedableError newSignal + nameClass:self message:#autoloadFailedSignal; + notifierString:'autoload failed'. self class changeClassTo:AutoloadMetaclass. - self setSuperclass:nil. ObjectMemory flushCaches. ]. LoadedClasses isNil ifTrue:[ LoadedClasses := IdentitySet new. + ]. + InProgressClasses isNil ifTrue:[ InProgressClasses := IdentitySet new. ]. - self ~~ Autoload ifTrue:[ - ^ self doesNotUnderstand:(Message selector:#initialize) - ]. "Modified: / 20.5.1997 / 19:06:25 / cg" "Modified: / 3.8.1999 / 14:23:30 / stefan" @@ -282,6 +289,11 @@ |myName myNameSpace newClass project prevMode packageID packageDefinitionClass| + self == Autoload ifTrue:[ + "already loaded" + ^ self. + ]. + myName := self name asSymbol. myNameSpace := self nameSpace. @@ -376,7 +388,7 @@ "/ this will vanish as soon as source-directory "/ is always guaranteed to contain an stx-subtree ((packageID startsWith:'stx/') - or:[packageID startsWith:'stx:']) ifTrue:[ + or:[packageID startsWith:'stx:']) ifTrue:[ Smalltalk fileInClass:myName package:(packageID copyFrom:5) @@ -559,6 +571,8 @@ ! inspectorExtraAttributes + "extra (pseudo instvar) entries to be shown in an inspector." + ^ #() ! @@ -634,185 +648,10 @@ "Modified: 26.5.1997 / 14:59:58 / cg" ! -subclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool category:cat - "create a new class as a subclass of an existing class (the receiver). - The subclass will have indexed variables if the receiving-class has." - - ^ self loadAndResendMessage -! - -subclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool category:cat classInstanceVariableNames:classInstanceVariableNames - "create a new class as a subclass of an existing class (the receiver). - The subclass will have indexed variables if the receiving-class has." - - ^ self loadAndResendMessage -! - -subclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool category:cat inEnvironment:aNameSpace - "create a new class as a subclass of an existing class (the receiver). - The subclass will have indexed variables if the receiving-class has." - - ^ self loadAndResendMessage -! - -subclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool privateIn:aClass - "create a new class as a subclass of an existing class (the receiver). - The subclass will have indexed variables if the receiving-class has." - - ^ self loadAndResendMessage -! - value "catch value - load the class and resend #value to the real one" ^ self doesNotUnderstand:(Message selector:#value) -! - -variableByteSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool category:cat - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable byte-sized nonpointer variables" - - ^ self loadAndResendMessage -! - -variableByteSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool privateIn:aClass - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable byte-sized nonpointer variables" - - ^ self loadAndResendMessage -! - -variableDoubleSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool category:cat - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable double-sized nonpointer variables" - - ^ self loadAndResendMessage -! - -variableDoubleSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool privateIn:aClass - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable double-sized nonpointer variables" - - ^ self loadAndResendMessage -! - -variableFloatSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool category:cat - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable float-sized nonpointer variables" - - ^ self loadAndResendMessage -! - -variableFloatSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool privateIn:aClass - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable float-sized nonpointer variables" - - ^ self loadAndResendMessage -! - -variableLongLongSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool category:cat - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable unsigned long-long-sized nonpointer variables" - - ^ self loadAndResendMessage -! - -variableLongLongSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool privateIn:aClass - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable longlong-sized nonpointer variables" - - ^ self loadAndResendMessage -! - -variableLongSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool category:cat - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable long-sized nonpointer variables" - - ^ self loadAndResendMessage -! - -variableLongSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool privateIn:aClass - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable long-sized nonpointer variables" - - ^ self loadAndResendMessage -! - -variableSignedLongLongSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool category:cat - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable signed long-long-sized nonpointer variables" - - ^ self loadAndResendMessage -! - -variableSignedLongLongSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool privateIn:aClass - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable signed longlong-sized nonpointer variables" - - ^ self loadAndResendMessage -! - -variableSignedLongSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool category:cat - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable signed long-sized nonpointer variables" - - ^ self loadAndResendMessage -! - -variableSignedLongSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool privateIn:aClass - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable signed long-sized nonpointer variables" - - ^ self loadAndResendMessage -! - -variableSignedWordSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool category:cat - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable word-sized signed nonpointer variables" - - ^ self loadAndResendMessage -! - -variableSignedWordSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool privateIn:aClass - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable word-sized signed nonpointer variables" - - ^ self loadAndResendMessage -! - -variableSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool category:cat - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable pointer variables" - - ^ self loadAndResendMessage -! - -variableSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool category:cat classInstanceVariableNames:classInstanceVariableNames - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable pointer variables" - - ^ self loadAndResendMessage -! - -variableSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool privateIn:aClass - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable pointer variables" - - ^ self loadAndResendMessage -! - -variableWordSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool category:cat - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable word-sized nonpointer variables" - - ^ self loadAndResendMessage -! - -variableWordSubclass:nameSymbol instanceVariableNames:instVarNameString classVariableNames:classVarString poolDictionaries:pool privateIn:aClass - "create a new class as a subclass of an existing class (the receiver) - in which the subclass has indexable word-sized nonpointer variables" - - ^ self loadAndResendMessage ! ! !Autoload class methodsFor:'private'! @@ -829,7 +668,7 @@ "take care: subclassing Autoload must still be possible" (self == Autoload) ifTrue:[ - ^ self perform:sel inClass:Autoload class superclass withArguments:args + ^ self perform:sel inClass:self class superclass withArguments:args ]. newClass := self autoload. @@ -924,7 +763,12 @@ !Autoload class methodsFor:'documentation'! version - ^ '$Id: Autoload.st 10447 2009-06-14 13:09:55Z vranyj1 $' + ^ '$Id: Autoload.st 10473 2009-10-24 15:48:19Z vranyj1 $' +! + +version_CVS + ^ '§Header: /cvs/stx/stx/libbasic/Autoload.st,v 1.155 2009/10/14 10:50:02 stefan Exp §' ! ! Autoload initialize! +