Version 0.22
[gitmo/MooseX-Types.git] / lib / MooseX / Types.pm
index 9528d36..b767a6f 100644 (file)
@@ -20,7 +20,7 @@ use Scalar::Util                      'reftype';
 use namespace::clean -except => [qw( meta )];
 
 use 5.008;
-our $VERSION = '0.17';
+our $VERSION = '0.22';
 my $UndefMsg = q{Action for type '%s' not yet defined in library '%s'};
 
 =head1 SYNOPSIS
@@ -213,7 +213,7 @@ of a set of library exports. Here is an example:
 
   package MyWrapper;
   use strict;
-  use Class::C3;
+  use MRO::Compat;
   use base 'MooseX::Types::Wrapper';
 
   sub coercion_export_generator {
@@ -425,16 +425,20 @@ it with @args.
 =cut
 
 sub create_arged_type_constraint {
-    my ($class, $name, $arg) = @_;  
-
-    my $container_tc =
-       Moose::Util::TypeConstraints::find_or_create_type_constraint("$name");
-    my $contained_tc =
-       Moose::Util::TypeConstraints::find_or_create_type_constraint("$arg");
-
-    my $tc_name = $container_tc->name . '[' . $contained_tc->name .  ']';
-
-    return Moose::Util::TypeConstraints::find_or_create_type_constraint($tc_name);
+    my ($class, $name, @args) = @_;  
+    my $type_constraint = Moose::Util::TypeConstraints::find_or_create_type_constraint("$name");
+    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)
@@ -591,9 +595,13 @@ caelum: Rafael Kitover <rkitover@cpan.org>
 
 rafl: Florian Ragwitz <rafl@debian.org>
 
+hdp: Hans Dieter Pearcey <hdp@cpan.org>
+
+autarch: Dave Rolsky <autarch@urth.org>
+
 =head1 COPYRIGHT & LICENSE
 
-Copyright (c) 2007-2009 Robert Sedlacek
+Copyright (c) 2007-2009 Robert Sedlacek <rs@474.at>
 
 This program is free software; you can redistribute it and/or modify
 it under the same terms as perl itself.