Thanks. That info made it much easier to try. Sorry I didn't end up
with an answer for you, but I confirm there is some issue here, or
something new I can learn when other chip in.
Here is what I tried.
* Installed XMLParser (monty.58) from Configuration Browser in Pharo 3.
* Ran your code. Got the same error.
* From the call stack I observed that
XMLOrderedCollection(SequenceableCollection)>>copyReplaceFrom:to:with:
has the line "newSequenceableCollection := self species new: newSize."
such that it seems your error might be reduced to the question of why
the following two snippets fail:
d := OrderedCollection new: 1.
d at: 1 put: 1.
e := OrderedCollection new: 3.
e at: 2 put: 1.
However I'm sorry that is beyond my knowledge, and I'm hoping someone
else can chip in so I can learn something.
Pushing on, I noticed that XMLOrderedList has an instance variable
/collection/ which holds the OrderedCollection.
Now I wonder (without great experience and hoping to learn something)
if it smells funny that XMLOrderedList inherits all of
SequencableCollection methods that can not operate on /collection/.
I noticed that XMLOrderedList was using an
inherited SequenceableCollection>>copyReplaceFrom:to:with
while OrderedCollection overrode that method with its own. So taking
inspiration XMLOrderedList>>copyFrom:to: to override
SequencableCollection>>copyReplaceFrom:to:with: to work with
/collection/
seems to solve your problem:
XMLOrderedList>>copyReplaceFrom: start to: stop with:
replacementCollection
^ self newWithCollection:
(collection copyReplaceFrom: start to: stop with:
replacementCollection )
Along the way I noticed a few (possible) bugs that seems not related to
your problem:
* When stepping through XMLOrderedList>>setCollection:
there is a red-box-of-death for the instance variables, which can be
solved by defining the following.
XMLOrderedList>>size
^ collection ifNil: [ 0 ] ifNotNil: [ collection size]
* In the debugger the /collection/ instance variable is not shown!
(e.g. line XMLOrderedList>>at:put:).
Can someone confirm this should show?
HTH
cheers -ben
Thushar G R wrote:
XMLOrderedList belongs
to package XML-Parser-Nodes.
a
:= XMLOrderedList new.
a
add:'1'.
a ,
XMLOrderedList new.
Here
select all and Do it. On line 3 (a ,
XMLOrderedList new.) i am
expected to get a copy of 'a' , but instead it throws an error SubscriptOutOfBounds.
OrderedCollection(Object)>>errorSubscriptBounds:
OrderedCollection>>ensureBoundsFrom:to:
OrderedCollection>>at:put:
OrderedCollection(SequenceableCollection)>>replaceFrom:to:with:startingAt:
XMLOrderedList>>replaceFrom:to:with:startingAt:
XMLOrderedList(SequenceableCollection)>>copyReplaceFrom:to:with:
XMLOrderedList(SequenceableCollection)>>,
UndefinedObject>>DoIt
OpalCompiler>>evaluate
SmalltalkEditor>>evaluateSelectionAndDo:
PluggableTextMorph>>inspectIt in Block: [ textMorph editor
evaluateSelectionAndDo: [ :resu...etc...
PluggableTextMorph>>handleEdit: in Block: [ result :=
editBlock value ]
TextMorphForEditView(TextMorph)>>handleEdit:
PluggableTextMorph>>handleEdit:
PluggableTextMorph>>inspectIt
SmalltalkEditor class>>buildSmalltalkEditorKeymappingsOn:
in Block: [ :morph | morph inspectIt ]
BlockClosure>>cull:
BlockClosure>>cull:cull:
BlockClosure>>cull:cull:cull:
KMCategoryBinding>>completeMatch:buffer:
KMKeymap>>notifyCompleteMatchTo:buffer: in Block: [ :l | l
completeMatch: self buffer: aBuffer ]
Array(SequenceableCollection)>>do:
KMKeymap>>notifyCompleteMatchTo:buffer:
KMKeymap>>onMatchWith:notify:andDo:
KMCategory>>onMatchWith:notify:andDo: in Block: [ :entry |
entry onMatchWith: anEventBuffer notify...etc...
Set>>do:
KMCategory>>onMatchWith:notify:andDo:
KMCategoryBinding>>verifyMatchWith:notifying:thenDoing:
KMDispatcher>>dispatch: in Block: [ :aTarget | ...
OrderedCollection>>do:
Plese refer to the above stack.
Thanks in advance.
thushar