X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FClass%2FMOP%2FMixin%2FHasMethods.pm;h=e3864a8017e694ba7b9c20b9dc64c5791ceff0a5;hb=5281e1f917fed9adeb2c4ec0855e26b41f974696;hp=1977d726cb539db3cc14af593806de484d2690cb;hpb=e92b2b21fa7c37268d06c977d605ce203112aebc;p=gitmo%2FClass-MOP.git diff --git a/lib/Class/MOP/Mixin/HasMethods.pm b/lib/Class/MOP/Mixin/HasMethods.pm index 1977d72..e3864a8 100644 --- a/lib/Class/MOP/Mixin/HasMethods.pm +++ b/lib/Class/MOP/Mixin/HasMethods.pm @@ -214,23 +214,7 @@ sub _restore_metamethods_from { my ($old_meta) = @_; for my $method ($old_meta->_get_local_methods) { - # XXX: this is pretty gross. the issue here is that - # CMOP::Method::Wrapped objects are subclasses of CMOP::Method, but - # when we get to moose, they'll need to be compatible with - # Moose::Meta::Method, which isn't possible. the right solution here is - # to make ::Wrapped into a role that gets applied to whatever the - # method_metaclass happens to be and get rid of - # wrapped_method_metaclass entirely, but that's not going to happen - # until we ditch cmop and get roles into the bootstrapping, so. - # i'm not maintaining the previous behavior of turning them into - # instances of the new method_metaclass because that's equally broken, - # and at least this way any issues will at least be detectable and - # potentially fixable. -doy - if (!$method->isa($self->wrapped_method_metaclass) - # and the same issue occurs with CMOP::Method::Meta objects/: - && !$method->isa($self->_meta_method_class)) { - $method->_make_compatible_with($self->method_metaclass); - } + $method->_make_compatible_with($self->method_metaclass); $self->add_method($method->name => $method); } }