* changes for MooseX::IOC
Stevan Little [Fri, 4 May 2007 19:21:57 +0000 (19:21 +0000)]
* fixes in the MooseX::AttributeHelpers
* better errors in MooseX::Storage

lib/MooseX/AttributeHelpers/Collection/Array.pm
lib/MooseX/AttributeHelpers/Collection/Hash.pm
lib/MooseX/AttributeHelpers/Counter.pm

index 8e0e36c..1bd9976 100644 (file)
@@ -57,9 +57,14 @@ sub _process_options_for_provides {
     my ($self, $options) = @_;
     (exists $options->{isa})
         || confess "You must define a type with the Array metaclass";  
-         
-    my $c = find_type_constraint($options->{isa}) || $options->{isa};
-    ( $c && blessed($c) && $c->is_a_type_of('ArrayRef'))
+
+    my $isa = $options->{isa}; 
+
+    unless (blessed($isa) && $isa->isa('Moose::Meta::TypeConstraint')) {
+        $isa = find_type_constraint($isa);        
+    }
+
+    ($isa->is_a_type_of('ArrayRef'))
         || confess "The type constraint for a Array ($options->{isa}) must be a subtype of ArrayRef";
 }
 
index 684a1c5..1131ae8 100644 (file)
@@ -35,8 +35,14 @@ sub _process_options_for_provides {
     my ($self, $options) = @_;    
     (exists $options->{isa})
         || confess "You must define a type with the Hash metaclass";  
-         
-    (find_type_constraint($options->{isa})->is_a_type_of('HashRef'))
+
+    my $isa = $options->{isa}; 
+
+    unless (blessed($isa) && $isa->isa('Moose::Meta::TypeConstraint')) {
+        $isa = find_type_constraint($isa);        
+    }
+
+    ($isa->is_a_type_of('HashRef'))
         || confess "The type constraint for a Hash ($options->{isa}) must be a subtype of HashRef";
 }
 
index 9339472..8851056 100644 (file)
@@ -28,7 +28,13 @@ sub _process_options_for_provides {
     (exists $options->{isa})
         || confess "You must define a type with the Counter metaclass";  
      
-    (find_type_constraint($options->{isa})->is_a_type_of('Num'))
+    my $isa = $options->{isa}; 
+    
+    unless (blessed($isa) && $isa->isa('Moose::Meta::TypeConstraint')) {
+        $isa = find_type_constraint($isa);        
+    }
+    
+    ($isa->is_a_type_of('Num'))
         || confess "The type constraint for a Counter ($options->{isa}) must be a subtype of Num";
 }