bootstrap the meta method in CMOP::Mixin too
Jesse Luehrs [Mon, 27 Sep 2010 01:14:42 +0000 (20:14 -0500)]
lib/Class/MOP.pm
lib/Class/MOP/Method/Meta.pm

index fabda7d..7393ac7 100644 (file)
@@ -670,6 +670,12 @@ Class::MOP::Instance->meta->add_attribute(
 # need to replace the meta method there with a real meta method object
 Class::MOP::Object->meta->_add_meta_method;
 
+## --------------------------------------------------------
+## Class::MOP::Mixin
+
+# need to replace the meta method there with a real meta method object
+Class::MOP::Mixin->meta->_add_meta_method;
+
 require Class::MOP::Deprecated unless our $no_deprecated;
 
 # we need the meta instance of the meta instance to be created now, in order
index e339832..a22ac55 100644 (file)
@@ -31,6 +31,7 @@ sub _generate_meta_method {
                 # it's okay to call meta methods on metaclasses, since we
                 # explicitly ask for them
                 if !$_[0]->isa('Class::MOP::Object')
+                && !$_[0]->isa('Class::MOP::Mixin')
                 # it's okay if the test itself calls ->meta, we only care about
                 # if the mop internals call ->meta
                 && $method_self->_is_caller_mop_internal(scalar caller);