X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst.pm;h=f0130271d1daf410c35f8280326190ce21ad3174;hp=03b49c65c1fe3d653ce9779ca4afe02a8594695c;hb=c1192f1ed63f124eb2d143e10b215703e7dc6284;hpb=6cf77e11ef210219fbbe19df5f5b7cd7c84f501c diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index 03b49c6..f013027 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -129,7 +129,7 @@ __PACKAGE__->stats_class('Catalyst::Stats'); __PACKAGE__->_encode_check(Encode::FB_CROAK | Encode::LEAVE_SRC); # Remember to update this in Catalyst::Runtime as well! -our $VERSION = '5.90085'; +our $VERSION = '5.90089_001'; $VERSION = eval $VERSION if $VERSION =~ /_/; # numify for warning-free dev releases sub import { @@ -1498,13 +1498,28 @@ sub uri_for { unshift @encoded_args, splice @$captures, $num_captures; } - $path = $c->dispatcher->uri_for_action($action, $captures); + # use Devel::Dwarn;Dwarn $captures; + + if($action->has_captures_constraints) { + unless($action->match_captures($c, $captures)) { + carp "@{$captures} do not match the type constraints in $action"; + } + } + + $path = $c->dispatcher->uri_for_action($action, $captures); if (not defined $path) { $c->log->debug(qq/Can't find uri_for action '$action' @$captures/) if $c->debug; return undef; } $path = '/' if $path eq ''; + + # At this point @encoded_args is the remaining Args (all captures removed). + if($action->has_args_constraints) { + unless($action->match_args($c,\@encoded_args)) { + carp "@encoded_args do not match the type constraints in $action"; + } + } } unshift(@encoded_args, $path); @@ -1567,6 +1582,9 @@ sub uri_for { } @keys); } + warn $base; + warn $args; + my $res = bless(\"${base}${args}${query}", $class); $res; }