[BUG][FIX] SystemDictionary>>renameClass:as: (still not fixed)

Chris Muller afunkyobject at yahoo.com
Tue Mar 16 18:33:29 UTC 2004


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