From: Will Coleda <[EMAIL PROTECTED]>
Date: Sun, 30 Jul 2006 12:36:08 -0400
This code is not working in Tcl at the moment (at the moment, not
sure if it ever did)
set a [list a b]
set a b
Under the covers, this should create a TclList PMC and assign it to
the global '$a'. It should then discard that value, and replace the
value in '$a' with a String of "b".
It's apparently trying to do so by morphing $a in the
FixedPMCArray:set_pmc method . . .
However, running this errors with:
"Can't set self from this type"
This error appears in one place in the parrot code base, in
Parrot_ResizablePMCArray_set_integer_native.
Hmm . . . I find this message only in Parrot_FixedPMCArray_set_pmc,
which is inherited by ResizablePMCArray.
Why is assign calling push_pmc?
And, why is RPA missing 'assign_pmc' (found in the plain ole Array) ?
(Though adding this to RPA in my sandbox didn't help.)
Both ResizablePMCArray and FixedPMCArray have "does array" . . . but
apparently that is not the same as inheriting from Array. So both seem
to be using the default.pmc method instead, which re-dispatches to the
aforementioned set_pmc method.
languages/tcl/t/tcl_misc.t#27 has a test for this behavior.
What's the generated PIR for this?
-- Bob