Will Coleda (via RT) wrote:
$ ./parrot foo.pir
Method 'set_string_native' not found
current instr.: 'test' pc 20 (foo.pir:8)
We wanted to do this in Tcl to simplify TclConst, but were unable to.
Presumably it's just that it's a vtable we're trying to super, not a
method...
The problem here isn't with Super, it's with the call:
$P4.'set_string_native'('urk')
You can't call a vtable function as a method. (That's a feature, not a
bug. It allows Parrot classes to have low-level functionality that isn't
visible from the HLLs.)
Now, if you change that line to the more accurate PIR way of calling
'set_string_native':
$P4 = 'urk'
Then you get the error:
set_string_native() not implemented in class 'Super'
The Super PMC is, in many ways, an ancient attempt at implementing
PMCProxy, and shows its age in spots. A real 'super' that crosses the
boundary between high-level classes and low-level PMCs will have to wait
until we finish the implementation of PDD 17 in January. The short-term
hack for accessing the low-level PMC within the object is to grab the
proxy object for that parent:
$P4 = getattribute $P3, ['String'], 'proxy'
$P4 = 'urk'
Allison