When inspecting in Jade an instance of IdentitySet with my objects I get
the following error: a OffsetError occurred (error 2012), reason:objErrNotIndexable, accessing a IdentitySet, object does not have varying instVars Converting the IdentitySet to an aninstance of OrderedCollection everything is ok. Marten -- Marten Feldtmann _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
Hi,
I did hit this bug but asOrderedCollection is a workaround i never mind... Is a Bug in JadeServer64bit3x>>inspect: method in Dolphin code. In my image i did a very ugly workaround... (you have to close Dolphin image and open it again in order to work) anObject class format > 0 ifTrue: [ 1 to: (anObject _basicSize min: 100) do: [:i | i printOn: stream. stream tab. self print: (self oopOf: ([anObject _basicAt: i] on: Error do:[:err | anObject asOrderedCollection _basicAt: i])) on: stream. "BRUNO UGLY FIX" stream lf. ]. The complete #inspect: method is: inspect: anObject | stream list dynamic string size | (stream := WriteStream on: String new) nextPutAll: anObject class name; tab; yourself. (self oopOf: anObject) printOn: stream. stream lf. (anObject isKindOf: Dictionary superclass) ifTrue: [^self inspectDictionary: anObject on: stream]. list := anObject class allInstVarNames. dynamic := anObject dynamicInstanceVariables. size := list size + dynamic size. anObject class format > 0 ifTrue: [ size := size + (anObject _basicSize min: 100). ]. size printOn: stream. stream lf. 1 to: list size do: [:i | stream nextPutAll: (list at: i); tab. self print: (self oopOf: (anObject instVarAt: i)) on: stream. stream lf. ]. 1 to: dynamic size do: [:i | stream nextPutAll: (dynamic at: i); tab. self print: (self oopOf: (anObject dynamicInstVarAt: (dynamic at: i))) on: stream. stream lf. ]. anObject class format > 0 ifTrue: [ 1 to: (anObject _basicSize min: 100) do: [:i | i printOn: stream. stream tab. self print: (self oopOf: ([anObject _basicAt: i] on: Error do:[:err | anObject asOrderedCollection _basicAt: i])) on: stream. "BRUNO FIX" stream lf. ]. ]. (string := anObject printString) size > 5000 ifTrue: [string := (string copyFrom: 1 to: 5000) , '...']. string class == String ifFalse: [ string := String withAll: (string collect: [:each | (32 <= each codePoint and: [each codePoint <= 127]) ifTrue: [each] ifFalse: [$?]]). ]. ^stream nextPutAll: string; contents. |
I believe that this problem was fixed with a recent change to include dynamic instance variables in the inspector. If you can reproduce it on a recent build let me know the Jade version and the GemStone/S version.
James > On Oct 4, 2014, at 9:57 AM, BrunoBB via Glass <[hidden email]> wrote: > > Hi, > > I did hit this bug but asOrderedCollection is a workaround i never mind... > > Is a Bug in JadeServer64bit3x>>inspect: method in Dolphin code. > > In my image i did a very ugly workaround... (you have to close Dolphin image > and open it again in order to work) > > anObject class format > 0 ifTrue: [ > 1 to: (anObject _basicSize min: 100) do: [:i | > i printOn: stream. > stream tab. > self print: (self oopOf: ([anObject _basicAt: i] on: Error do:[:err | > anObject asOrderedCollection _basicAt: i])) on: stream. "BRUNO UGLY FIX" > stream lf. > ]. > > The complete #inspect: method is: > inspect: anObject > > | stream list dynamic string size | > (stream := WriteStream on: String new) > nextPutAll: anObject class name; tab; > yourself. > (self oopOf: anObject) printOn: stream. > stream lf. > (anObject isKindOf: Dictionary superclass) ifTrue: [^self > inspectDictionary: anObject on: stream]. > list := anObject class allInstVarNames. > dynamic := anObject dynamicInstanceVariables. > size := list size + dynamic size. > anObject class format > 0 ifTrue: [ > size := size + (anObject _basicSize min: 100). > ]. > size printOn: stream. > stream lf. > 1 to: list size do: [:i | > stream nextPutAll: (list at: i); tab. > self print: (self oopOf: (anObject instVarAt: i)) on: stream. > stream lf. > ]. > 1 to: dynamic size do: [:i | > stream nextPutAll: (dynamic at: i); tab. > self print: (self oopOf: (anObject dynamicInstVarAt: (dynamic at: i))) on: > stream. > stream lf. > ]. > anObject class format > 0 ifTrue: [ > 1 to: (anObject _basicSize min: 100) do: [:i | > i printOn: stream. > stream tab. > self print: (self oopOf: ([anObject _basicAt: i] on: Error do:[:err | > anObject asOrderedCollection _basicAt: i])) on: stream. "BRUNO FIX" > stream lf. > ]. > ]. > (string := anObject printString) size > 5000 ifTrue: [string := (string > copyFrom: 1 to: 5000) , '...']. > string class == String ifFalse: [ > string := String withAll: (string collect: [:each | (32 <= each codePoint > and: [each codePoint <= 127]) ifTrue: [each] ifFalse: [$?]]). > ]. > ^stream > nextPutAll: string; > contents. > > > > > -- > View this message in context: http://forum.world.st/Glass-Jade-Failure-when-Inpection-an-instance-of-IdentitySet-tp4781781p4782614.html > Sent from the GLASS mailing list archive at Nabble.com. > _______________________________________________ > Glass mailing list > [hidden email] > http://lists.gemtalksystems.com/mailman/listinfo/glass _______________________________________________ Glass mailing list [hidden email] http://lists.gemtalksystems.com/mailman/listinfo/glass |
Free forum by Nabble | Edit this page |