X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FTypes.pm;h=33f26d731c05294895ca2fbbb1b7ed23d67dd65f;hb=19fc6ead4a6a8ab39892d70b7a6d1a32392ee720;hp=4516728b91dfa4c381b819b31022308f843e2ac9;hpb=6cfbfdbc099ddc95835bfb05384d36c9eba7e527;p=gitmo%2FMooseX-Types.git diff --git a/lib/MooseX/Types.pm b/lib/MooseX/Types.pm index 4516728..33f26d7 100644 --- a/lib/MooseX/Types.pm +++ b/lib/MooseX/Types.pm @@ -20,7 +20,7 @@ use Scalar::Util 'reftype'; use namespace::clean -except => [qw( meta )]; use 5.008; -our $VERSION = '0.17'; +our $VERSION = '0.19'; my $UndefMsg = q{Action for type '%s' not yet defined in library '%s'}; =head1 SYNOPSIS @@ -427,7 +427,18 @@ it with @args. sub create_arged_type_constraint { my ($class, $name, @args) = @_; my $type_constraint = Moose::Util::TypeConstraints::find_or_create_type_constraint("$name"); - return $type_constraint->parameterize(@args); + my $parameterized = $type_constraint->parameterize(@args); + # It's obnoxious to have to parameterize before looking for the TC, but the + # alternative is to hard-code the assumption that the name is + # "$name[$args[0]]", which would be worse. + # This breaks MXMS, unfortunately, which relies on things like Tuple[...] + # creating new type objects each time. + # if (my $existing = + # Moose::Util::TypeConstraints::find_type_constraint($parameterized->name)) { + # return $existing; + # } + # Moose::Util::TypeConstraints::register_type_constraint($parameterized); + return $parameterized; } =head2 create_base_type_constraint ($name) @@ -584,9 +595,11 @@ caelum: Rafael Kitover rafl: Florian Ragwitz +hdp: Hans Dieter Pearcey + =head1 COPYRIGHT & LICENSE -Copyright (c) 2007-2009 Robert Sedlacek +Copyright (c) 2007-2009 Robert Sedlacek This program is free software; you can redistribute it and/or modify it under the same terms as perl itself.