Andrew Parker via RT wrote:
On Thu Jun 28 16:34:17 2007, [EMAIL PROTECTED] wrote:
While comparing pdd15_objects compared to the tests located in
t/pdd15oo we cannot find evidence the following tests exist:
callmethodsupercc
callmethodnextcc
newclass
get_class
removeparent
removeattribute
addrole

I just ran into these docs being wrong. It appears that it is not simply that there are missing tests, but missing implementations as well. I have found no other references, except in PDD15, to the following ops:

   * callmethodsupercc
   * callmethodnextcc

The ops were added in PDD 15, but haven't been implemented yet. The docs are correct, the implementation needs to be updated.

After stumbling across the Super PMC I suspect that those two ops are not going to be supported. Super seems to support callmethodsupercc, though, but I don't see support for callmethodnextcc anywhere. I've attached a patch to remove these 2 ops from PDD15.

Super PMC will be deprecated (or at least greatly changed). It's an old attempt at parent proxying and can never work properly as currently implemented.

These ops look to still not be in any tests:

   * removeparent
   * removeattribute

After looking a bit closer into these (and trying to write a test for removeparent) I came across RT#50646. It appears that removeparent may not be getting implemented. The implementation of removeattribute is currently:

  real_exception(interp, NULL, UNIMPLEMENTED, "removeattribute is not 
implemented");

Not yet implemented.

In theory, these are logical features to have. In practice, they're not used by our target languages (or any language that I'm aware of). I suspect that the future of dynamically recomposing classes is more likely to take the form of combining sets of roles in various different ways, rather than manually deleting a parent, role, or attribute from an existing class.

Show of hands for language implementors that need the ability to remove a parent or attribute from a class?

Allison

Reply via email to