SystemDictionary>>renameClass:as: (still not fixed)

rrobbes rrobbes at info.unicaen.fr
Tue Mar 16 20:23:54 UTC 2004


Hi Chris, 

If you use Monticello, I posted a workaround for that :
MC was listening to the SystemChangeNotifier events, but in the case
of class renaming, it sent this method (includesClass). With the fix it
proceeds otherwise (see MCPackageManager >> #classRenamed: ), and so
there is no problem. Maybe we should modify the PackageInfo method,
but I don't know how. 

Romain 

Chris Muller a écrit: 

> Hi, I am still having trouble renaming a class, even after filing in this
> patch. 
> 
> I have a package that only has extensions, none of its own classes.  It blows
> when trying to ask this PackageInfo includesClass: because the class has
> already been deleted. 
> 
> After just a few minutes of looking at it I am, frankly, puzzled. 
> 
> 1) The implementation of PackageInfo>>includesClass: is: 
> 
>      ^ self includesSystemCategory: aClass theNonMetaClass category 
> 
> This is puzzling because it seems to only be asking if the category exists, not
> aClass. 
> 
> 2)  At the point where it asks this question, aClass has already been deleted,
> so "aClass theNonMetaClass category" answers nil.  Passed into includesClass:,
> it ends up trying to send "beginsWith:" to the nil.  Normally, I would expect a
> debugger to appear. 
> 
> Instead, it takes a confusing path through something called
> WeakActionSequenceTrappingErrors and, miraculously, keeps chugging right along
> with, apparently, the next Package, asking the same question, "includesClass:"
> until it eventually hit my package with no class definitions, only extensions. 
> 
> So I don't have an easy-answer at the moment, any help is greatly appreciated. 
> 
> Thank you!
>   Chris 
> 
> 
> 16 March 2004 12:26:45 pm 
> 
> VM: Win32 - a SmalltalkImage
> Image: Squeak3.7alpha [latest update: #5816] 
> 
> SecurityManager state:
> Restricted: false
> FileAccess: true
> SocketAccess: true
> Working Dir C:\Development\Chris\Development\Squeak
> Trusted Dir C:\Development\Chris\Development\Squeak\Administrator
> Untrusted Dir C:\My Squeak\Administrator 
> 
> UndefinedObject(Object)>>doesNotUnderstand: #beginsWith:
> 	Receiver: nil
> 	Arguments and temporary variables: 
> 		aMessage: 	beginsWith: 'Ma code editor enhancements-'
> 	Receiver's instance variables: 
> nil 
> 
> PackageInfo>>category:matches:
> 	Receiver: a PackageInfo
> 	Arguments and temporary variables: 
> 		categoryName: 	nil
> 		prefix: 	'Ma code editor enhancements'
> 	Receiver's instance variables: 
> 		packageName: 	'Ma code editor enhancements'
> 		methodCategoryPrefix: 	nil 
> 
> PackageInfo>>includesSystemCategory:
> 	Receiver: a PackageInfo
> 	Arguments and temporary variables: 
> 		categoryName: 	nil
> 	Receiver's instance variables: 
> 		packageName: 	'Ma code editor enhancements'
> 		methodCategoryPrefix: 	nil 
> 
> PackageInfo>>includesClass:
> 	Receiver: a PackageInfo
> 	Arguments and temporary variables: 
> 		aClass: 	MagmaPerson
> 	Receiver's instance variables: 
> 		packageName: 	'Ma code editor enhancements'
> 		methodCategoryPrefix: 	nil 
> 
> 
> --- The full stack ---
> UndefinedObject(Object)>>doesNotUnderstand: #beginsWith:
> PackageInfo>>category:matches:
> PackageInfo>>includesSystemCategory:
> PackageInfo>>includesClass:
>  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> MCWorkingCopy(MCPackageManager)>>classModified:
> WeakMessageSend>>valueWithArguments:
> [] in WeakActionSequenceTrappingErrors>>valueWithArguments:startingFrom:
> {[answer := each valueWithArguments: anArray]}
> BlockContext>>on:do:
> WeakActionSequenceTrappingErrors>>valueWithArguments:startingFrom:
> [] in WeakActionSequenceTrappingErrors>>valueWithArguments:startingFrom: {[:exc
> |  self valueWithArguments: anArray startingFrom: index + 1.  exc pass]}
> BlockContext>>valueWithPossibleArgs:
> [] in MethodContext(ContextPart)>>handleSignal: {[(self tempAt: 2)  
> valueWithPossibleArgs: {exception}]}
> BlockContext>>ensure:
> MethodContext(ContextPart)>>handleSignal:
> MessageNotUnderstood(Exception)>>signal
> UndefinedObject(Object)>>doesNotUnderstand: #beginsWith:
> PackageInfo>>category:matches:
> PackageInfo>>includesSystemCategory:
> PackageInfo>>includesClass:
> MCWorkingCopy(MCPackageManager)>>classModified:
> WeakMessageSend>>valueWithArguments:
> [] in WeakActionSequenceTrappingErrors>>valueWithArguments:startingFrom:
> {[answer := each valueWithArguments: anArray]}
> BlockContext>>on:do:
> WeakActionSequenceTrappingErrors>>valueWithArguments:startingFrom:
> [] in WeakActionSequenceTrappingErrors>>valueWithArguments:startingFrom: {[:exc
> |  self valueWithArguments: anArray startingFrom: index + 1.  exc pass]}
> BlockContext>>valueWithPossibleArgs:
> [] in MethodContext(ContextPart)>>handleSignal: {[(self tempAt: 2)  
> valueWithPossibleArgs: {exception}]}
> BlockContext>>ensure:
> MethodContext(ContextPart)>>handleSignal:
> MessageNotUnderstood(Exception)>>signal
> UndefinedObject(Object)>>doesNotUnderstand: #beginsWith:
> MaxMillionPackageInfo(PackageInfo)>>category:matches:
> MaxMillionPackageInfo(PackageInfo)>>includesSystemCategory:
> MaxMillionPackageInfo(PackageInfo)>>includesClass:
> MCWorkingCopy(MCPackageManager)>>classModified:
> WeakMessageSend>>valueWithArguments:
> [] in WeakActionSequenceTrappingErrors>>valueWithArguments:startingFrom:
> {[answer := each valueWithArguments: anArray]}
> BlockContext>>on:do:
> WeakActionSequenceTrappingErrors>>valueWithArguments:startingFrom:
> [] in WeakActionSequenceTrappingErrors>>valueWithArguments:startingFrom: {[:exc
> |  self valueWithArguments: anArray startingFrom: index + 1.  exc pass]}
> BlockContext>>valueWithPossibleArgs:
> [] in MethodContext(ContextPart)>>handleSignal: {[(self tempAt: 2)  
> valueWithPossibleArgs: {exception}]}
> BlockContext>>ensure:
> MethodContext(ContextPart)>>handleSignal:
> MessageNotUnderstood(Exception)>>signal
> UndefinedObject(Object)>>doesNotUnderstand: #beginsWith:
> ConnectorsInfo(PackageInfo)>>category:matches:
> ConnectorsInfo(PackageInfo)>>includesSystemCategory:
> ConnectorsInfo(PackageInfo)>>includesClass:
> MCWorkingCopy(MCPackageManager)>>classModified:
> WeakMessageSend>>valueWithArguments:
> [] in WeakActionSequenceTrappingErrors>>valueWithArguments:startingFrom:
> {[answer := each valueWithArguments: anArray]}
> ...etc... 
> 
> 
 



More information about the Squeak-dev mailing list