1) Attributes in roles aren't real objects, and there is no attribute
metaclass for roles. This makes it impossible to automatically apply
attribute traits through ::MetaRole.

2) Metaclass compatibility code in Moose/CMOP is pretty broken. It
happens to work reasonably in most cases because it can generally figure
things out if there are class or instance (??) meta-traits applied, but
this isn't always the case. I have a branch in cmop for better metaclass
incompatibility detection, but it breaks all kinds of things in Moose,
since Moose doesn't currently fix metaclasses entirely correctly. I
started trying to fix it in Moose as well, but got a bit overwhelmed.
(An example of the failure: when a superclass has a class metaclass
trait applied, and something subclasses it and tries to apply an
attribute metaclass trait without also applying a class metaclass
trait, Moose decides that it doesn't know how to resolve that).

3) Going into more detail on the OMG EVIL CODE GENERATION topic,
::Constructor is reasonably separated out so that parts of it are easy
to override, but ::Destructor is not, which is keeping me from adding
actual support for that to MooseX::NonMoose.

-doy

Reply via email to