[BUG,FIX]True(Object)>>error:

hmm at heeg.de hmm at heeg.de
Fri Feb 25 09:58:27 UTC 2005


Tried to load a package which defined selectors #true and #false.
Due do the new literal vector interpretation (nil, true and false
within #() are not transformed into Symbols) this gives an error
when the class organizer tries to update its categories.

Proposed workaround:
transform nil, true and false into corresponding symbols
in Categorizer>>changeFromCategorySpecs:
...
	1 to: categorySpecs size do: 
		[:i | | selectors |
		catSpec _ categorySpecs at: i.
		newCategories at: i put: catSpec first asSymbol.
		selectors := catSpec allButFirst collect: [:each | each isSymbol
							ifTrue: [each]
							ifFalse: [each printString asSymbol]].
		selectors asSortedCollection do:
...

Cheers,
Hans-Martin
----
25 February 2005 10:48:27 am

VM: unix - a SmalltalkImage
Image: Squeak3.7 [latest update: #5989]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /home/hmm/squeak
Trusted Dir /home/hmm/squeak/secure
Untrusted Dir /home/hmm/squeak/untrusted

True(Object)>>error:
	Receiver: true
	Arguments and temporary variables: 
		aString: 	'Instances of True are not indexable'
	Receiver's instance variables: 
true

True(Object)>>errorNotIndexable
	Receiver: true
	Arguments and temporary variables: 

	Receiver's instance variables: 
true

True(Object)>>size
	Receiver: true
	Arguments and temporary variables: 

	Receiver's instance variables: 
true

Symbol(String)>>compare:with:collated:
	Receiver: #R
	Arguments and temporary variables: 
		string1: 	#R
		string2: 	true
		order: 	a ByteArray(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
20 21 22 2...etc...
		len1: 	1
		len2: 	nil
		c1: 	nil
		c2: 	nil
		i: 	nil
		iLimiT: 	nil
	Receiver's instance variables: 
#R


--- The full stack ---
True(Object)>>error:
True(Object)>>errorNotIndexable
True(Object)>>size
Symbol(String)>>compare:with:collated:
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Symbol(String)>><=
SortedCollection>>should:precede:
SortedCollection>>sort:to:
SortedCollection>>reSort
SortedCollection>>addAll:
SortedCollection class(OrderedCollection class)>>newFrom:
Array(Object)>>as:
Array(Collection)>>asSortedCollection
ClassOrganizer(Categorizer)>>changeFromCategorySpecs:
[] in ClassOrganizer>>changeFromCategorySpecs: {[super
changeFromCategorySpecs: categorySpecs]}
[] in SystemChangeNotifier>>doSilently: {[result := aBlock value]}
BlockContext>>ensure:
SystemChangeNotifier>>doSilently:
ClassOrganizer>>changeFromCategorySpecs:
ClassOrganizer(Categorizer)>>changeFromString:
ClassOrganizer(Categorizer)>>scanFrom:
[] in StandardFileStream(PositionableStream)>>fileInAnnouncing: {[val :=
(self peekFor: $!)     ifTrue: [(Compiler evaluate: self nextChunk
l...]}
BlockContext>>on:do:
[] in StandardFileStream(PositionableStream)>>fileInAnnouncing: {[:bar |
 [self atEnd]   whileFalse: [bar value: self position.    self
skipS...]}
ProgressInitiationException>>defaultAction
UndefinedObject>>handleSignal:
MethodContext(ContextPart)>>handleSignal:
MethodContext(ContextPart)>>handleSignal:
ProgressInitiationException(Exception)>>signal
ProgressInitiationException>>display:at:from:to:during:
ProgressInitiationException class>>display:at:from:to:during:
String>>displayProgressAt:from:to:during:
StandardFileStream(PositionableStream)>>fileInAnnouncing:
[] in
SMDefaultInstaller(SMSimpleInstaller)>>fileIntoChangeSetNamed:fromStream
: {[global newChanges: changeSet.  stream fileInAnnouncing: 'Loading ' ,
newNam...]}
BlockContext>>ensure:
SMDefaultInstaller(SMSimpleInstaller)>>fileIntoChangeSetNamed:fromStream
:
SMDefaultInstaller>>fileIn
SMDefaultInstaller>>install
[] in SMLoader>>installPackageRelease: {[(SMInstaller forPackageRelease:
aRelease) install.  myRelease = self instal...]}
BlockContext>>ensure:
CursorWithMask(Cursor)>>showWhile:
[] in SMLoader>>installPackageRelease: {[Cursor wait   showWhile:
[(SMInstaller forPackageRelease: aRelease) install...]}
BlockContext>>on:do:
SMLoader>>installPackageRelease:
SMLoader>>installPackageRelease
SMLoader>>perform:orSendTo:
[] in MenuItemMorph>>invokeWithEvent: {[(selArgCount := selector
numArgs) = 0   ifTrue: [target perform: selector] ...]}
BlockContext>>ensure:
CursorWithMask(Cursor)>>showWhile:
MenuItemMorph>>invokeWithEvent:
MenuItemMorph>>mouseUp:
MenuItemMorph>>handleMouseUp:
MouseButtonEvent>>sentTo:
MenuItemMorph(Morph)>>handleEvent:
MorphicEventDispatcher>>dispatchDefault:with:
MorphicEventDispatcher>>dispatchEvent:with:
MenuItemMorph(Morph)>>processEvent:using:
MorphicEventDispatcher>>dispatchDefault:with:
MorphicEventDispatcher>>dispatchEvent:with:
MenuMorph(Morph)>>processEvent:using:
MenuMorph(Morph)>>processEvent:
MenuMorph>>handleFocusEvent:
-- and more not shown --



More information about the Squeak-dev mailing list