$tc->can('is_strictly_a_type_of') &&
$tc->is_strictly_a_type_of('Tuple'))
{
- my @parameters = @{ $tc->parameters||[]};
- if( defined($parameters[-1]) and exists($parameters[-1]->{slurpy})) {
- return undef;
- } else {
- return my $total_params = scalar(@parameters);
+ my @parameters = @{ $tc->parameters||[] };
+ my $final = $parameters[-1];
+ if ( defined $final ) {
+ if ( blessed $final ) {
+ # modern form of slurpy
+ if ($final->can('is_strictly_a_type_of') && $final->is_strictly_a_type_of('Slurpy')) {
+ return undef;
+ }
+ }
+ else {
+ # old form of slurpy
+ if (ref $final eq 'HASH' && $final->{slurpy}) {
+ return undef;
+ }
+ }
}
+ return scalar @parameters;
} elsif($tc->is_a_type_of('Ref')) {
return undef;
} else {