* 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

Reply via email to