immutable refacotring
[gitmo/Class-MOP.git] / lib / Class / MOP.pm
index 9e5a23b..adbccfa 100644 (file)
@@ -315,6 +315,12 @@ Class::MOP::Attribute->meta->add_attribute(
     ))
 );
 
+Class::MOP::Attribute->meta->add_attribute(
+    Class::MOP::Attribute->new('associated_methods' => (
+        reader  => { 'associated_methods' => \&Class::MOP::Attribute::associated_methods },
+        default => sub { [] } 
+    ))
+);
 
 # NOTE: (meta-circularity)
 # This should be one of the last things done
@@ -367,6 +373,56 @@ Class::MOP::Method::Wrapped->meta->add_attribute(
 );
 
 ## --------------------------------------------------------
+## Class::MOP::Method::Accessor
+
+Class::MOP::Method::Accessor->meta->add_attribute(
+    Class::MOP::Attribute->new('attribute' => (
+        reader => { 
+            'associated_attribute' => \&Class::MOP::Method::Accessor::associated_attribute 
+        },
+    ))    
+);
+
+Class::MOP::Method::Accessor->meta->add_attribute(
+    Class::MOP::Attribute->new('accessor_type' => (
+        reader => { 'accessor_type' => \&Class::MOP::Method::Accessor::accessor_type },
+    ))    
+);
+
+Class::MOP::Method::Accessor->meta->add_attribute(
+    Class::MOP::Attribute->new('is_inline' => (
+        reader => { 'is_inline' => \&Class::MOP::Method::Accessor::is_inline },
+    ))    
+);
+
+## --------------------------------------------------------
+## Class::MOP::Method::Constructor
+
+Class::MOP::Method::Constructor->meta->add_attribute(
+    Class::MOP::Attribute->new('options' => (
+        reader => { 
+            'options' => \&Class::MOP::Method::Constructor::options 
+        },
+    ))    
+);
+
+Class::MOP::Method::Constructor->meta->add_attribute(
+    Class::MOP::Attribute->new('meta_instance' => (
+        reader => { 
+            'meta_instance' => \&Class::MOP::Method::Constructor::meta_instance 
+        },
+    ))    
+);
+
+Class::MOP::Method::Constructor->meta->add_attribute(
+    Class::MOP::Attribute->new('attributes' => (
+        reader => { 
+            'attributes' => \&Class::MOP::Method::Constructor::attributes 
+        },
+    ))    
+);
+
+## --------------------------------------------------------
 ## Class::MOP::Instance
 
 # NOTE:
@@ -405,8 +461,9 @@ $_->meta->make_immutable(
     
     Class::MOP::Object   
 
-    Class::MOP::Attribute::Accessor
-    Class::MOP::Method::Wrapped    
+    Class::MOP::Method::Accessor
+    Class::MOP::Method::Constructor    
+    Class::MOP::Method::Wrapped           
 /;
 
 1;
@@ -716,18 +773,18 @@ L<Devel::Cover> report on this module's test suite.
  ---------------------------- ------ ------ ------ ------ ------ ------ ------
  File                           stmt   bran   cond    sub    pod   time  total
  ---------------------------- ------ ------ ------ ------ ------ ------ ------
- Class/MOP.pm                   78.0   87.5   55.6   71.4  100.0   12.4   76.8
- Class/MOP/Attribute.pm         83.4   75.6   86.7   94.4  100.0    8.9   85.2
- Class/MOP/Class.pm             96.9   75.8   43.2   98.0  100.0   55.3   83.6
- Class/MOP/Class/Immutable.pm   88.5   53.8    n/a   95.8  100.0    1.1   84.7
- Class/MOP/Instance.pm          87.9   75.0   33.3   89.7  100.0   10.1   89.1
- Class/MOP/Method.pm            97.6   60.0   57.9   76.9  100.0    1.5   82.8
- Class/MOP/Module.pm            87.5    n/a   11.1   83.3  100.0    0.3   66.7
- Class/MOP/Object.pm           100.0    n/a   33.3  100.0  100.0    0.1   89.5
- Class/MOP/Package.pm           95.1   69.0   33.3  100.0  100.0    9.9   85.5
- metaclass.pm                  100.0  100.0   83.3  100.0    n/a    0.5   97.7
+ Class/MOP.pm                   97.7  100.0   88.9   94.7  100.0    3.2   96.6
+ Class/MOP/Attribute.pm         75.5   77.9   82.4   88.3  100.0    4.0   81.5
+ Class/MOP/Class.pm             96.9   88.8   72.1   98.2  100.0   35.8   91.4
+ Class/MOP/Class/Immutable.pm   88.2   60.0    n/a   95.5  100.0    0.5   84.6
+ Class/MOP/Instance.pm          86.4   75.0   33.3   86.2  100.0    1.2   87.5
+ Class/MOP/Method.pm            97.5   75.0   61.5   80.6  100.0   12.7   89.7
+ Class/MOP/Module.pm           100.0    n/a   55.6  100.0  100.0    0.1   90.7
+ Class/MOP/Object.pm            73.3    n/a   20.0   80.0  100.0    0.1   66.7
+ Class/MOP/Package.pm           94.6   71.7   33.3  100.0  100.0   42.2   87.0
+ metaclass.pm                  100.0  100.0   83.3  100.0    n/a    0.2   97.7
  ---------------------------- ------ ------ ------ ------ ------ ------ ------
- Total                          91.5   72.1   48.8   90.7  100.0  100.0   84.2
+ Total                          91.3   80.4   69.8   91.9  100.0  100.0   88.1
  ---------------------------- ------ ------ ------ ------ ------ ------ ------
 
 =head1 ACKNOWLEDGEMENTS