* Needs work *
- More testing of roles (see the fairly limited t/pmc/role.t). Particularly:
- Can a role be created?
- Can a role be composed with a class?
- When a class is composed from a role, check that 'does' reports
true for that role name. (Also roles composed from roles, and classes
composed from roles which are composed from other roles.)
- When a class is not composed from a role, check that 'does' reports
false.
- Can attributes be added to a class via a role? Can they be stored
and retrieved on an instance of that class?
- Can methods be added to a class via a role? Can they be invoked on
an instance object of that class?
- The Class PMC doesn't currently support 'exclude' and 'alias'
parameters to 'add_role'. It should.
- The Class PMC should not implement the 'does' vtable function, it
should use the implementation from the default PMC. (There is currently
no way for the Class PMC to have a role composed into it, since roles
are at the PIR level, not the C level.) The behaviour now in Class's
'does' vtable function should move to the 'does' method.
- The Role PMC doesn't implement 'remove_attribute'.
- The Role PMC doesn't silently ignore attempts to re-add the same
method object under the same name. (In Class that was a hack to get it
working with IMCC, so debatable whether Role should have exactly the
same behavior.)
* Modified in PDD *
- Changed the spec to match current design/implementation where
attributes and parents can only be added before the first object is
instantiated from the class.
- Clarified the differentiation between class methods and instance
methods for 'can' and 'does'.
- Removed the comment about Class and Role PMC's methods being supplied
by a role. Unnecessary complexity.
- Removed optional parameters to 'add_method' for selecting vtable
override (that has a separate method now).
- Added information on the 'add_vtable_override' method in the Class PMC.
- Removed the mention of special handling for MultiSubs in 'add_method'
for Class and Role, since there is none (the ":multi :method"
combination is handled elsewhere).
- Modified the description of 'find_method' in Object and Class,
matching current behavior (respecting the difference between class
methods and instance methods).
- Deleted (sketchy) information about object "container types". The base
set of classes don't (and won't) store or respect that information,
languages that need it will need more extensive support (which may
eventually be merged into the base set).
- Deleted 'remove_role' from Class and Role for consistency (the spec
already said removing roles wasn't allowed).
Allison
_______________________________________________
http://lists.parrot.org/mailman/listinfo/parrot-dev