factor out meta method generation
[gitmo/Class-MOP.git] / lib / metaclass.pm
index b688f26..192a664 100644 (file)
@@ -43,22 +43,7 @@ sub import {
 
     # create a meta object so we can install &meta
     my $meta = $metaclass->initialize($package => %options);
-    $meta->add_method('meta' => sub {
-        # we must re-initialize so that it
-        # works as expected in subclasses,
-        # since metaclass instances are
-        # singletons, this is not really a
-        # big deal anyway.
-        if (Class::MOP::DEBUG_NO_META()) {
-            my ($self) = @_;
-            if (my $meta = try { $self->SUPER::meta }) {
-                return $meta if $meta->isa('Class::MOP::Class');
-            }
-            confess "'meta' method called by MOP internals"
-                if caller =~ /Class::MOP|metaclass/;
-        }
-        $metaclass->initialize((blessed($_[0]) || $_[0]))
-    }) if $should_install_meta;
+    $meta->_add_meta_method if $should_install_meta;
 }
 
 1;