Hello community,

here is the log from the commit of package perl-MooseX-Types for 
openSUSE:Factory checked in at 2012-05-31 17:08:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-MooseX-Types (Old)
 and      /work/SRC/openSUSE:Factory/.perl-MooseX-Types.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-MooseX-Types", Maintainer is ""

Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-MooseX-Types/perl-MooseX-Types.changes      
2012-03-05 14:02:53.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.perl-MooseX-Types.new/perl-MooseX-Types.changes 
2012-05-31 17:08:52.000000000 +0200
@@ -1,0 +2,14 @@
+Wed May 30 12:27:14 UTC 2012 - [email protected]
+
+- updated to 0.35
+     - The new delegation code could fail when a type had no
+       parent. Attempting to subtype Any was one way to trigger the
+       bug. (Dave Rolsky)
+     - The new delegation code broke calling ->can or ->isa on
+       MooseX::Types::TypeDecorator as a class method. (Dave Rolsky)
+     - Special case new to avoid unexpected exceptions on unloaded classes
+     - Switch delegation order to prioritise type over class except for new
+     - Support delegation of methods to the class for class types
+     - Factor out _try_delegate method
+
+-------------------------------------------------------------------

Old:
----
  MooseX-Types-0.31.tar.gz

New:
----
  MooseX-Types-0.35.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-MooseX-Types.spec ++++++
--- /var/tmp/diff_new_pack.XV6U4o/_old  2012-05-31 17:08:53.000000000 +0200
+++ /var/tmp/diff_new_pack.XV6U4o/_new  2012-05-31 17:08:53.000000000 +0200
@@ -16,86 +16,100 @@
 #
 
 
-%if 0%{?suse_version} < 1119
-%define with_test 1
-%endif
-
 Name:           perl-MooseX-Types
-Version:        0.31
+Version:        0.35
 Release:        0
+%define cpan_name MooseX-Types
 Summary:        Organise your Moose types in libraries
 License:        Artistic-1.0 or GPL-1.0+
 Group:          Development/Libraries/Perl
-Source:         
ftp://ftp.cpan.org/pub/CPAN/authors/id/D/DR/DROLSKY/MooseX-Types-%{version}.tar.gz
-Url:            http://search.cpan.org/dist/MooseX-Types
+Url:            http://search.cpan.org/dist/MooseX-Types/
+Source:         
http://www.cpan.org/authors/id/D/DR/DROLSKY/%{cpan_name}-%{version}.tar.gz
+BuildArch:      noarch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-%{perl_requires}
-BuildRequires:  make
 BuildRequires:  perl
 BuildRequires:  perl-macros
-%if 0%{?with_test}
-BuildRequires:  perl(Test::More) >= 0.80
-BuildRequires:  perl(Test::Requires)
+BuildRequires:  perl(Carp::Clan) >= 6.00
+BuildRequires:  perl(Moose) >= 1.06
+BuildRequires:  perl(Sub::Install) >= 0.924
+BuildRequires:  perl(Sub::Name)
 BuildRequires:  perl(Test::Fatal)
 BuildRequires:  perl(Test::Moose)
-%endif
-BuildRequires:  perl(FindBin)
-BuildRequires:  perl(ExtUtils::MakeMaker) >= 6.42
-BuildRequires:  perl(Scalar::Util) >= 1.19
-BuildRequires:  perl(Sub::Name)
-BuildRequires:  perl(Carp)
+BuildRequires:  perl(Test::More) >= 0.88
+BuildRequires:  perl(Test::Requires)
 BuildRequires:  perl(namespace::clean) >= 0.19
-BuildRequires:  perl(Sub::Install) >= 0.924
-BuildRequires:  perl(Carp::Clan) >= 6.00
-BuildRequires:  perl(Moose) >= 1.06
-Requires:       perl(Scalar::Util) >= 1.19
-Requires:       perl(Sub::Name)
-Requires:       perl(Carp)
-Requires:       perl(namespace::clean) >= 0.19
-Requires:       perl(Sub::Install) >= 0.924
+#BuildRequires: perl(Class::MOP)
+#BuildRequires: perl(DecoratorLibrary)
+#BuildRequires: perl(IntrospectTypeExports)
+#BuildRequires: perl(Moose::Exporter)
+#BuildRequires: perl(Moose::Meta::TypeConstraint::Union)
+#BuildRequires: perl(Moose::Role)
+#BuildRequires: perl(Moose::Util::TypeConstraints)
+#BuildRequires: perl(MooseX::Types)
+#BuildRequires: perl(MooseX::Types::Base)
+#BuildRequires: perl(MooseX::Types::CheckedUtilExports)
+#BuildRequires: perl(MooseX::Types::Combine)
+#BuildRequires: perl(MooseX::Types::Moose)
+#BuildRequires: perl(MooseX::Types::TypeDecorator)
+#BuildRequires: perl(MooseX::Types::UndefinedType)
+#BuildRequires: perl(MooseX::Types::Util)
+#BuildRequires: perl(MooseX::Types::Wrapper)
+#BuildRequires: perl(Sub::Exporter)
+#BuildRequires: perl(SubExporterCompatibility)
+#BuildRequires: perl(TestLibrary)
+#BuildRequires: perl(TestNamespaceSep)
+#BuildRequires: perl(Test::Spelling)
+#BuildRequires: perl(TestWrapper)
 Requires:       perl(Carp::Clan) >= 6.00
 Requires:       perl(Moose) >= 1.06
+Requires:       perl(Sub::Install) >= 0.924
+Requires:       perl(Sub::Name)
+Requires:       perl(namespace::clean) >= 0.19
+%{perl_requires}
 
 %description
-The types provided with Moose are by design global. This package helps you
-to organise and selectively import your own and the built-in types in
-libraries. As a nice side effect, it catches typos at compile-time too.
-However, the main reason for this module is to provide an easy way to not
-have conflicts with your type names, since the internal fully qualified
-names of the types will be prefixed with the library's name.
-This module will also provide you with some helper functions to make it
-easier to use Moose types in your code.
+The type system provided by Moose effectively makes all of its builtin type
+global, as are any types you declare with Moose. This means that every
+module that declares a type named "PositiveInt" is sharing the same type
+object. This can be a problem when different parts of the code base want to
+use the same name for different things.
+
+This package lets you declare types using short names, but behind the
+scenes it namespaces all your type declarations, effectively prevent name
+clashes between packages.
+
+This is done by creating a type library module like 'MyApp::Types' and then
+importing types from that module into other modules.
+
+As a side effect, the declaration mechanism allows you to write type names
+as barewords (really function calls), which catches typos in names at
+compile time rather than run time.
+
+This module also provides some helper functions for using Moose types
+outside of attribute declarations.
+
+If you mix string-based names with types created by this module, it will
+warn, with a few exceptions. If you are declaring a 'class_type()' or
+'role_type()' within your type library, or if you use a fully qualified
+name like '"MyApp::Foo"'.
 
 %prep
-%setup -q -n "MooseX-Types-%{version}"
-%__sed -i '/^auto_install/d' Makefile.PL
+%setup -q -n %{cpan_name}-%{version}
 
 %build
-%__perl Makefile.PL PREFIX="%{_prefix}"
-%__make %{?_smp_flags}
+%{__perl} Makefile.PL INSTALLDIRS=vendor
+%{__make} %{?_smp_mflags}
+
+%check
+%{__make} test
 
 %install
 %perl_make_install
 %perl_process_packlist
+%perl_gen_filelist
 
-%if 0%{?with_test}
-
-%check
-%__make test
-%endif
-
-%clean
-%{?buildroot:%__rm -rf "%{buildroot}"}
-
-%files
-%defattr(-,root,root)
-%doc Changes README
-%dir %{perl_vendorlib}/MooseX
-%{perl_vendorlib}/MooseX/Types.pm
-%{perl_vendorlib}/MooseX/Types
-%dir %{perl_vendorarch}/auto/MooseX
-%{perl_vendorarch}/auto/MooseX/Types
-%doc %{perl_man3dir}/MooseX::Types.%{perl_man3ext}%{ext_man}
-%doc %{perl_man3dir}/MooseX::Types::*.%{perl_man3ext}%{ext_man}
+%files -f %{name}.files
+%defattr(-,root,root,755)
+%doc Changes LICENSE README
 
 %changelog

++++++ MooseX-Types-0.31.tar.gz -> MooseX-Types-0.35.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/Changes 
new/MooseX-Types-0.35/Changes
--- old/MooseX-Types-0.31/Changes       2011-12-23 00:43:56.000000000 +0100
+++ new/MooseX-Types-0.35/Changes       2012-05-19 07:43:55.000000000 +0200
@@ -1,5 +1,27 @@
 Revision history for MooseX-Types
 
+0.35    2012-05-19
+
+        - The new delegation code could fail when a type had no
+          parent. Attempting to subtype Any was one way to trigger the
+          bug. (Dave Rolsky)
+
+        - The new delegation code broke calling ->can or ->isa on
+          MooseX::Types::TypeDecorator as a class method. (Dave Rolsky)
+
+0.34    2012-05-18
+
+        - Special case new to avoid unexpected exceptions on unloaded classes
+
+0.33    2012-05-18
+
+        - Switch delegation order to prioritise type over class except for new
+
+0.32    2012-05-18
+
+        - Support delegation of methods to the class for class types
+        - Factor out _try_delegate method
+
 0.31    2011-12-22
         - Add support for qw( :all ) on MooseX::Types::Combine libraries. 
(kentnl)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/LICENSE 
new/MooseX-Types-0.35/LICENSE
--- old/MooseX-Types-0.31/LICENSE       2011-12-23 00:43:56.000000000 +0100
+++ new/MooseX-Types-0.35/LICENSE       2012-05-19 07:43:55.000000000 +0200
@@ -1,4 +1,4 @@
-This software is copyright (c) 2011 by Robert "phaylon" Sedlacek.
+This software is copyright (c) 2012 by Robert "phaylon" Sedlacek.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
@@ -12,7 +12,7 @@
 
 --- The GNU General Public License, Version 1, February 1989 ---
 
-This software is Copyright (c) 2011 by Robert "phaylon" Sedlacek.
+This software is Copyright (c) 2012 by Robert "phaylon" Sedlacek.
 
 This is free software, licensed under:
 
@@ -272,7 +272,7 @@
 
 --- The Artistic License 1.0 ---
 
-This software is Copyright (c) 2011 by Robert "phaylon" Sedlacek.
+This software is Copyright (c) 2012 by Robert "phaylon" Sedlacek.
 
 This is free software, licensed under:
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/MANIFEST 
new/MooseX-Types-0.35/MANIFEST
--- old/MooseX-Types-0.31/MANIFEST      2011-12-23 00:43:56.000000000 +0100
+++ new/MooseX-Types-0.35/MANIFEST      2012-05-19 07:43:55.000000000 +0200
@@ -28,6 +28,9 @@
 t/19_typelib_with_role.t
 t/20_union_with_string_type.t
 t/21_coerce_parameterized_types.t
+t/22_class_type.t
+t/23_any_subtype.t
+t/24_class_can_isa.t
 t/lib/Combined.pm
 t/lib/DecoratorLibrary.pm
 t/lib/Empty.pm
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/META.json 
new/MooseX-Types-0.35/META.json
--- old/MooseX-Types-0.31/META.json     2011-12-23 00:43:56.000000000 +0100
+++ new/MooseX-Types-0.35/META.json     2012-05-19 07:43:55.000000000 +0200
@@ -4,7 +4,7 @@
       "Robert \"phaylon\" Sedlacek <[email protected]>"
    ],
    "dynamic_config" : 0,
-   "generated_by" : "Dist::Zilla version 4.300005, CPAN::Meta::Converter 
version 2.112150",
+   "generated_by" : "Dist::Zilla version 4.300015, CPAN::Meta::Converter 
version 2.120900",
    "license" : [
       "perl_5"
    ],
@@ -16,11 +16,11 @@
    "prereqs" : {
       "build" : {
          "requires" : {
-            "FindBin" : 0,
-            "Test::Fatal" : 0,
-            "Test::Moose" : 0,
+            "FindBin" : "0",
+            "Test::Fatal" : "0",
+            "Test::Moose" : "0",
             "Test::More" : "0.88",
-            "Test::Requires" : 0
+            "Test::Requires" : "0"
          }
       },
       "configure" : {
@@ -30,12 +30,12 @@
       },
       "runtime" : {
          "requires" : {
-            "Carp" : 0,
+            "Carp" : "0",
             "Carp::Clan" : "6.00",
             "Moose" : "1.06",
             "Scalar::Util" : "1.19",
             "Sub::Install" : "0.924",
-            "Sub::Name" : 0,
+            "Sub::Name" : "0",
             "namespace::clean" : "0.19",
             "perl" : "v5.8.0"
          }
@@ -53,6 +53,6 @@
          "web" : 
"http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo/MooseX-Types.git;a=summary";
       }
    },
-   "version" : "0.31"
+   "version" : "0.35"
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/META.yml 
new/MooseX-Types-0.35/META.yml
--- old/MooseX-Types-0.31/META.yml      2011-12-23 00:43:56.000000000 +0100
+++ new/MooseX-Types-0.35/META.yml      2012-05-19 07:43:55.000000000 +0200
@@ -11,7 +11,7 @@
 configure_requires:
   ExtUtils::MakeMaker: 6.30
 dynamic_config: 0
-generated_by: 'Dist::Zilla version 4.300005, CPAN::Meta::Converter version 
2.112150'
+generated_by: 'Dist::Zilla version 4.300015, CPAN::Meta::Converter version 
2.120900'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -29,4 +29,4 @@
 resources:
   bugtracker: http://rt.cpan.org/NoAuth/Bugs.html?Dist=MooseX-Types
   repository: git://git.moose.perl.org/MooseX-Types.git
-version: 0.31
+version: 0.35
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/Makefile.PL 
new/MooseX-Types-0.35/Makefile.PL
--- old/MooseX-Types-0.31/Makefile.PL   2011-12-23 00:43:56.000000000 +0100
+++ new/MooseX-Types-0.35/Makefile.PL   2012-05-19 07:43:55.000000000 +0200
@@ -34,7 +34,7 @@
     "Sub::Name" => 0,
     "namespace::clean" => "0.19"
   },
-  "VERSION" => "0.31",
+  "VERSION" => "0.35",
   "test" => {
     "TESTS" => "t/*.t t/regressions/*.t"
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/README new/MooseX-Types-0.35/README
--- old/MooseX-Types-0.31/README        2011-12-23 00:43:56.000000000 +0100
+++ new/MooseX-Types-0.35/README        2012-05-19 07:43:55.000000000 +0200
@@ -1,11 +1,11 @@
 
 
 This archive contains the distribution MooseX-Types,
-version 0.31:
+version 0.35:
 
   Organise your Moose types in libraries
 
-This software is copyright (c) 2011 by Robert "phaylon" Sedlacek.
+This software is copyright (c) 2012 by Robert "phaylon" Sedlacek.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/dist.ini 
new/MooseX-Types-0.35/dist.ini
--- old/MooseX-Types-0.31/dist.ini      2011-12-23 00:43:56.000000000 +0100
+++ new/MooseX-Types-0.35/dist.ini      2012-05-19 07:43:55.000000000 +0200
@@ -3,7 +3,7 @@
 license = Perl_5
 copyright_holder = Robert "phaylon" Sedlacek
 
-version = 0.31
+version = 0.35
 
 [NextRelease]
 format = %-7v %{yyyy-MM-dd}d
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/lib/MooseX/Types/Base.pm 
new/MooseX-Types-0.35/lib/MooseX/Types/Base.pm
--- old/MooseX-Types-0.31/lib/MooseX/Types/Base.pm      2011-12-23 
00:43:56.000000000 +0100
+++ new/MooseX-Types-0.35/lib/MooseX/Types/Base.pm      2012-05-19 
07:43:55.000000000 +0200
@@ -1,6 +1,6 @@
 package MooseX::Types::Base;
 {
-  $MooseX::Types::Base::VERSION = '0.31';
+  $MooseX::Types::Base::VERSION = '0.35';
 }
 use Moose;
 
@@ -209,7 +209,7 @@
 
 =head1 VERSION
 
-version 0.31
+version 0.35
 
 =head1 DESCRIPTION
 
@@ -286,7 +286,7 @@
 
 =head1 COPYRIGHT AND LICENSE
 
-This software is copyright (c) 2011 by Robert "phaylon" Sedlacek.
+This software is copyright (c) 2012 by Robert "phaylon" Sedlacek.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/MooseX-Types-0.31/lib/MooseX/Types/CheckedUtilExports.pm 
new/MooseX-Types-0.35/lib/MooseX/Types/CheckedUtilExports.pm
--- old/MooseX-Types-0.31/lib/MooseX/Types/CheckedUtilExports.pm        
2011-12-23 00:43:56.000000000 +0100
+++ new/MooseX-Types-0.35/lib/MooseX/Types/CheckedUtilExports.pm        
2012-05-19 07:43:55.000000000 +0200
@@ -1,6 +1,6 @@
 package MooseX::Types::CheckedUtilExports;
 {
-  $MooseX::Types::CheckedUtilExports::VERSION = '0.31';
+  $MooseX::Types::CheckedUtilExports::VERSION = '0.35';
 }
 
 #ABSTRACT: Wrap L<Moose::Util::TypeConstraints> to be safer for 
L<MooseX::Types>
@@ -70,7 +70,7 @@
 
 =head1 VERSION
 
-version 0.31
+version 0.35
 
 =head1 DESCRIPTION
 
@@ -109,7 +109,7 @@
 
 =head1 COPYRIGHT AND LICENSE
 
-This software is copyright (c) 2011 by Robert "phaylon" Sedlacek.
+This software is copyright (c) 2012 by Robert "phaylon" Sedlacek.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/lib/MooseX/Types/Combine.pm 
new/MooseX-Types-0.35/lib/MooseX/Types/Combine.pm
--- old/MooseX-Types-0.31/lib/MooseX/Types/Combine.pm   2011-12-23 
00:43:56.000000000 +0100
+++ new/MooseX-Types-0.35/lib/MooseX/Types/Combine.pm   2012-05-19 
07:43:55.000000000 +0200
@@ -1,6 +1,6 @@
 package MooseX::Types::Combine;
 {
-  $MooseX::Types::Combine::VERSION = '0.31';
+  $MooseX::Types::Combine::VERSION = '0.35';
 }
 
 # ABSTRACT: Combine type libraries for exporting
@@ -94,7 +94,7 @@
 
 =head1 VERSION
 
-version 0.31
+version 0.35
 
 =head1 SYNOPSIS
 
@@ -136,7 +136,7 @@
 
 =head1 COPYRIGHT AND LICENSE
 
-This software is copyright (c) 2011 by Robert "phaylon" Sedlacek.
+This software is copyright (c) 2012 by Robert "phaylon" Sedlacek.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/lib/MooseX/Types/Moose.pm 
new/MooseX-Types-0.35/lib/MooseX/Types/Moose.pm
--- old/MooseX-Types-0.31/lib/MooseX/Types/Moose.pm     2011-12-23 
00:43:56.000000000 +0100
+++ new/MooseX-Types-0.35/lib/MooseX/Types/Moose.pm     2012-05-19 
07:43:55.000000000 +0200
@@ -1,6 +1,6 @@
 package MooseX::Types::Moose;
 {
-  $MooseX::Types::Moose::VERSION = '0.31';
+  $MooseX::Types::Moose::VERSION = '0.35';
 }
 
 # ABSTRACT: Type exports that match the types shipped with L<Moose>
@@ -35,7 +35,7 @@
 
 =head1 VERSION
 
-version 0.31
+version 0.35
 
 =head1 SYNOPSIS
 
@@ -91,7 +91,7 @@
 
 =head1 COPYRIGHT AND LICENSE
 
-This software is copyright (c) 2011 by Robert "phaylon" Sedlacek.
+This software is copyright (c) 2012 by Robert "phaylon" Sedlacek.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/lib/MooseX/Types/TypeDecorator.pm 
new/MooseX-Types-0.35/lib/MooseX/Types/TypeDecorator.pm
--- old/MooseX-Types-0.31/lib/MooseX/Types/TypeDecorator.pm     2011-12-23 
00:43:56.000000000 +0100
+++ new/MooseX-Types-0.35/lib/MooseX/Types/TypeDecorator.pm     2012-05-19 
07:43:55.000000000 +0200
@@ -1,6 +1,6 @@
 package MooseX::Types::TypeDecorator;
 {
-  $MooseX::Types::TypeDecorator::VERSION = '0.31';
+  $MooseX::Types::TypeDecorator::VERSION = '0.35';
 }
 
 #ABSTRACT: Wraps Moose::Meta::TypeConstraint objects with added features
@@ -57,7 +57,11 @@
 
 
 sub new {
-    my $class = shift @_;
+    my $proto = shift;
+    if (ref($proto)) {
+        return $proto->_try_delegate('new', @_);
+    }
+    my $class = $proto;
     if(my $arg = shift @_) {
         if(blessed $arg && $arg->isa('Moose::Meta::TypeConstraint')) {
             return bless {'__type_constraint'=>$arg}, $class;
@@ -92,39 +96,21 @@
 
 
 sub isa {
-    my ($self, $target) = @_;  
-    if(defined $target) {
-       if(blessed $self) {
-               return $self->__type_constraint->isa($target);
-       } else {
-               return;
-       }
-    } else {
-        return;
-    }
+  my $self = shift;
+  return
+    blessed $self
+      ? $self->__type_constraint->isa(@_)
+      || $self->_try_delegate( 'isa', @_ )
+      : $self->SUPER::isa(@_);
 }
 
 
-
 sub can {
-    my ($self, $target) = @_;
-    if(defined $target) {
-       if(blessed $self) {
-               return $self->__type_constraint->can($target);
-       } else {
-               return;
-       }
-    } else {
-        return;
-    }
-}
-
+    my $self = shift;
 
-sub meta {
-       my $self = shift @_;
-       if(blessed $self) {
-               return $self->__type_constraint->meta;
-       } 
+    return blessed $self
+        ? $self->_try_delegate( 'can', @_ )
+        : $self->SUPER::can(@_);
 }
 
 
@@ -142,22 +128,49 @@
 
 
 sub AUTOLOAD {
-    
     my ($self, @args) = @_;
     my ($method) = (our $AUTOLOAD =~ /([^:]+)$/);
     
     ## We delegate with this method in an attempt to support a value of
     ## __type_constraint which is also AUTOLOADing, in particular the class
     ## MooseX::Types::UndefinedType which AUTOLOADs during autovivication.
-    
-    my $return;
-    eval {
-        $return = $self->__type_constraint->$method(@args);
-    }; if($@) {
-        __PACKAGE__->_throw_error($@);
-    } else {
-        return $return;
+
+    $self->_try_delegate($method, @args);    
+}
+
+sub _try_delegate {
+    my ($self, $method, @args) = @_;
+    my $tc = $self->__type_constraint;
+    my $class;
+    if ($tc->can('is_subtype_of')) { # Union can't
+        my $search_tc = $tc;
+        while (1) {
+            if ($search_tc->isa('Moose::Meta::TypeConstraint::Class')) {
+                $class = $search_tc->class;
+                last;
+            }
+            $search_tc = $search_tc->parent;
+            last unless $search_tc && $search_tc->is_subtype_of('Object');
+        }
     }
+        
+    my $inv = do {
+        if ($method eq 'new') {
+            die "new called on type decorator for non-class-type ".$tc->name
+                unless $class;
+            die "new called on class type decorator ".$tc->name."\n"
+                ." for class ${class}\n"
+                ." which does not provide a new method - did you forget to 
load it?"
+                unless $class->can('new');
+            $class
+        } elsif ($class && !$tc->can($method)) {
+            $class
+        } else {
+            $tc
+        }
+    };
+
+    $inv->$method(@args);
 }
 
 
@@ -172,7 +185,7 @@
 
 =head1 VERSION
 
-version 0.31
+version 0.35
 
 =head1 DESCRIPTION
 
@@ -193,16 +206,13 @@
 
 =head2 isa
 
-handle $self->isa since AUTOLOAD can't.
+handle $self->isa since AUTOLOAD can't - this tries both the type constraint,
+and for a class type, the class.
 
 =head2 can
 
 handle $self->can since AUTOLOAD can't.
 
-=head2 meta
-
-have meta examine the underlying type constraints
-
 =head2 _throw_error
 
 properly delegate error messages
@@ -213,7 +223,11 @@
 
 =head2 AUTOLOAD
 
-Delegate to the decorator target.
+Delegate to the decorator target, unless this is a class type, in which
+case it will try to delegate to the type object, then if that fails try
+the class. The method 'new' is special cased to only be permitted on
+the class; if there is no class, or it does not provide a new method,
+an exception will be thrown.
 
 =head1 LICENSE
 
@@ -226,7 +240,7 @@
 
 =head1 COPYRIGHT AND LICENSE
 
-This software is copyright (c) 2011 by Robert "phaylon" Sedlacek.
+This software is copyright (c) 2012 by Robert "phaylon" Sedlacek.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/lib/MooseX/Types/UndefinedType.pm 
new/MooseX-Types-0.35/lib/MooseX/Types/UndefinedType.pm
--- old/MooseX-Types-0.31/lib/MooseX/Types/UndefinedType.pm     2011-12-23 
00:43:56.000000000 +0100
+++ new/MooseX-Types-0.35/lib/MooseX/Types/UndefinedType.pm     2012-05-19 
07:43:55.000000000 +0200
@@ -1,6 +1,6 @@
 package MooseX::Types::UndefinedType;
 {
-  $MooseX::Types::UndefinedType::VERSION = '0.31';
+  $MooseX::Types::UndefinedType::VERSION = '0.35';
 }
 
 use warnings;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/lib/MooseX/Types/Util.pm 
new/MooseX-Types-0.35/lib/MooseX/Types/Util.pm
--- old/MooseX-Types-0.31/lib/MooseX/Types/Util.pm      2011-12-23 
00:43:56.000000000 +0100
+++ new/MooseX-Types-0.35/lib/MooseX/Types/Util.pm      2012-05-19 
07:43:55.000000000 +0200
@@ -1,6 +1,6 @@
 package MooseX::Types::Util;
 {
-  $MooseX::Types::Util::VERSION = '0.31';
+  $MooseX::Types::Util::VERSION = '0.35';
 }
 
 #ABSTRACT: Common utility functions for the distribution
@@ -53,7 +53,7 @@
 
 =head1 VERSION
 
-version 0.31
+version 0.35
 
 =head1 DESCRIPTION
 
@@ -119,7 +119,7 @@
 
 =head1 COPYRIGHT AND LICENSE
 
-This software is copyright (c) 2011 by Robert "phaylon" Sedlacek.
+This software is copyright (c) 2012 by Robert "phaylon" Sedlacek.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/lib/MooseX/Types/Wrapper.pm 
new/MooseX-Types-0.35/lib/MooseX/Types/Wrapper.pm
--- old/MooseX-Types-0.31/lib/MooseX/Types/Wrapper.pm   2011-12-23 
00:43:56.000000000 +0100
+++ new/MooseX-Types-0.35/lib/MooseX/Types/Wrapper.pm   2012-05-19 
07:43:55.000000000 +0200
@@ -1,6 +1,6 @@
 package MooseX::Types::Wrapper;
 {
-  $MooseX::Types::Wrapper::VERSION = '0.31';
+  $MooseX::Types::Wrapper::VERSION = '0.35';
 }
 
 #ABSTRACT: Wrap exports from a library
@@ -48,7 +48,7 @@
 
 =head1 VERSION
 
-version 0.31
+version 0.35
 
 =head1 DESCRIPTION
 
@@ -73,7 +73,7 @@
 
 =head1 COPYRIGHT AND LICENSE
 
-This software is copyright (c) 2011 by Robert "phaylon" Sedlacek.
+This software is copyright (c) 2012 by Robert "phaylon" Sedlacek.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/lib/MooseX/Types.pm 
new/MooseX-Types-0.35/lib/MooseX/Types.pm
--- old/MooseX-Types-0.31/lib/MooseX/Types.pm   2011-12-23 00:43:56.000000000 
+0100
+++ new/MooseX-Types-0.35/lib/MooseX/Types.pm   2012-05-19 07:43:55.000000000 
+0200
@@ -1,6 +1,6 @@
 package MooseX::Types;
 {
-  $MooseX::Types::VERSION = '0.31';
+  $MooseX::Types::VERSION = '0.35';
 }
 use Moose;
 
@@ -24,7 +24,7 @@
 
 sub import {
     my ($class, %args) = @_;
-    my  $callee = caller;
+    my  $caller = caller;
 
     # everyone should want this
     strict->import;
@@ -32,7 +32,7 @@
 
     # inject base class into new library
     {   no strict 'refs';
-        unshift @{ $callee . '::ISA' }, 'MooseX::Types::Base';
+        unshift @{ $caller . '::ISA' }, 'MooseX::Types::Base';
     }
 
     # generate predeclared type helpers
@@ -46,18 +46,18 @@
                 if $type =~ /::/;
 
             # add type to library and remember to export
-            $callee->add_type($type);
+            $caller->add_type($type);
             push @to_export, $type;
         }
 
-        $callee->import({ -full => 1, -into => $callee }, @to_export);
+        $caller->import({ -full => 1, -into => $caller }, @to_export);
     }
 
     # run type constraints import
-    Moose::Util::TypeConstraints->import({ into => $callee });
+    Moose::Util::TypeConstraints->import({ into => $caller });
 
     # override some with versions that check for syntax errors
-    MooseX::Types::CheckedUtilExports->import({ into => $callee });
+    MooseX::Types::CheckedUtilExports->import({ into => $caller });
 
     1;
 }
@@ -176,7 +176,7 @@
 
 =head1 VERSION
 
-version 0.31
+version 0.35
 
 =head1 SYNOPSIS
 
@@ -299,7 +299,7 @@
 
 If you mix string-based names with types created by this module, it will warn,
 with a few exceptions. If you are declaring a C<class_type()> or
-c<role_type()> within your type library, or if you use a fully qualified name
+C<role_type()> within your type library, or if you use a fully qualified name
 like C<"MyApp::Foo">.
 
 =head1 LIBRARY DEFINITION
@@ -620,7 +620,7 @@
 
 =head1 COPYRIGHT AND LICENSE
 
-This software is copyright (c) 2011 by Robert "phaylon" Sedlacek.
+This software is copyright (c) 2012 by Robert "phaylon" Sedlacek.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/t/22_class_type.t 
new/MooseX-Types-0.35/t/22_class_type.t
--- old/MooseX-Types-0.31/t/22_class_type.t     1970-01-01 01:00:00.000000000 
+0100
+++ new/MooseX-Types-0.35/t/22_class_type.t     2012-05-19 07:43:55.000000000 
+0200
@@ -0,0 +1,56 @@
+use strict;
+use warnings;
+use Test::More;
+
+BEGIN {
+  package MyTypes;
+
+  use MooseX::Types::Moose qw( Item );
+  use MooseX::Types -declare => [ 'ClassyType', 'NoClass' ];
+
+  class_type 'ClassyClass';
+
+  subtype ClassyType, as 'ClassyClass';
+
+  subtype NoClass, as Item, where { 1 };
+}
+
+BEGIN {
+
+  ok(!eval { MyTypes::ClassyType->new }, 'new without class loaded explodes');
+
+  like($@, qr/does not provide/, 'right exception');
+
+  ok(!eval { MyTypes::NoClass->new }, 'new on non-class type');
+
+  like($@, qr/non-class-type/, 'right exception');
+}
+
+BEGIN {
+
+  package ClassyClass;
+
+  use Moose;
+
+  sub check { die "FAIL" }
+
+  package ClassyClassConsumer;
+
+  BEGIN { MyTypes->import('ClassyType') }
+  use Moose;
+
+  has om_nom => (
+    is => 'ro', isa => ClassyType, default => sub { ClassyType->new }
+  );
+
+}
+
+ok(my $o = ClassyClassConsumer->new, "Constructor happy");
+
+is(ref($o->om_nom), 'ClassyClass', 'Attribute happy');
+
+ok(ClassyClassConsumer->new(om_nom => ClassyClass->new), 'Constructor happy');
+
+ok(!eval { ClassyClassConsumer->new(om_nom => 3) }, 'Type checked');
+
+done_testing;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/t/23_any_subtype.t 
new/MooseX-Types-0.35/t/23_any_subtype.t
--- old/MooseX-Types-0.31/t/23_any_subtype.t    1970-01-01 01:00:00.000000000 
+0100
+++ new/MooseX-Types-0.35/t/23_any_subtype.t    2012-05-19 07:43:55.000000000 
+0200
@@ -0,0 +1,16 @@
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Fatal;
+
+use MooseX::Types -declare => ['Foo'];
+use MooseX::Types::Moose qw( Any );
+
+is(
+    exception { subtype Foo, as Any },
+    undef,
+    'no exception when subtyping Any type'
+);
+
+done_testing();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/MooseX-Types-0.31/t/24_class_can_isa.t 
new/MooseX-Types-0.35/t/24_class_can_isa.t
--- old/MooseX-Types-0.31/t/24_class_can_isa.t  1970-01-01 01:00:00.000000000 
+0100
+++ new/MooseX-Types-0.35/t/24_class_can_isa.t  2012-05-19 07:43:55.000000000 
+0200
@@ -0,0 +1,21 @@
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Fatal;
+
+use MooseX::Types::TypeDecorator;
+
+is(
+    exception { MooseX::Types::TypeDecorator->isa('X') },
+    undef,
+    'no exception calling ->isa on MooseX::Types::TypeDecorator as class 
method'
+);
+
+is(
+    exception { MooseX::Types::TypeDecorator->can('X') },
+    undef,
+    'no exception calling ->can on MooseX::Types::TypeDecorator as class 
method'
+);
+
+done_testing();

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to