support imported types (types-tiny, MXT)
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Action.pm
index ca4996a..274ffd9 100644 (file)
@@ -100,13 +100,19 @@ has args_constraints => (
       return \@args;
     } else {
       @args =
-        map { Moose::Util::TypeConstraints::find_or_parse_type_constraint($_) || die "$_ is not a constraint!" } 
+        map {  $self->resolve_type_constraint($_) || die "$_ is not a constraint!" }
         @arg_protos;
     }
 
     return \@args;
   }
 
+sub resolve_type_constraint {
+  my ($self, $name) = @_;
+  my $tc = eval "package ${\$self->class}; $name" || undef;
+  return $tc || Moose::Util::TypeConstraints::find_or_parse_type_constraint($name);
+}
+
 use overload (
 
     # Stringify to reverse for debug output etc.
@@ -134,6 +140,7 @@ sub execute {
 
 sub match {
     my ( $self, $c ) = @_;
+    $c->log->debug($self->reverse);
 
     # If infinite args, we always match
     return 1 if $self->normalized_arg_number == ~0;
@@ -149,7 +156,7 @@ sub match {
       ) {
         return $self->args_constraints->[0]->check($c->req->args);
       } else {
-        for my $i($#{ $c->req->args }) {
+        for my $i(0..$#{ $c->req->args }) {
           $self->args_constraints->[$i]->check($c->req->args->[$i]) || return 0;
         }
         return 1;