make CMOP::Package a thin wrapper around Package::Stash
[gitmo/Class-MOP.git] / t / 081_meta_package_extension.t
index 4ac0a06..c8b2735 100644 (file)
@@ -7,15 +7,15 @@ use Test::Exception;
 use Class::MOP;
 
 {
-    package My::Meta::Package;
-
+    package My::Package::Stash;
     use strict;
     use warnings;
 
-    use Carp 'confess';
-    use Symbol 'gensym';
+    use base 'Package::Stash';
 
-    use base 'Class::MOP::Package';
+    use metaclass;
+
+    use Symbol 'gensym';
 
     __PACKAGE__->meta->add_attribute(
         'namespace' => (
@@ -24,6 +24,11 @@ use Class::MOP;
         )
     );
 
+    sub new {
+        my $class = shift;
+        $class->meta->new_object(__INSTANCE__ => $class->SUPER::new(@_));
+    }
+
     sub add_package_symbol {
         my ($self, $variable, $initial_value) = @_;
 
@@ -35,6 +40,19 @@ use Class::MOP;
     }
 }
 
+{
+    package My::Meta::Package;
+
+    use strict;
+    use warnings;
+
+    use base 'Class::MOP::Package';
+
+    sub _package_stash {
+        $_[0]->{_package_stash} ||= My::Package::Stash->new($_[0]->name);
+    }
+}
+
 # No actually package Foo exists :)
 my $meta = My::Meta::Package->initialize('Foo');