r71422 - in /branches/upstream/libmouse-perl/current: ./ lib/ lib/Mouse/ lib/Mouse/Meta/ lib/Mouse/Meta/Method/ lib/Mouse/Meta/Role/ lib/Mouse/Util/ t/001_mouse/ xs-src/

jawnsy-guest at users.alioth.debian.org jawnsy-guest at users.alioth.debian.org
Mon Mar 14 23:45:15 UTC 2011


Author: jawnsy-guest
Date: Mon Mar 14 23:45:07 2011
New Revision: 71422

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=71422
Log:
[svn-upgrade] new version libmouse-perl (0.91)

Added:
    branches/upstream/libmouse-perl/current/t/001_mouse/072_tc_extra_args.t
Modified:
    branches/upstream/libmouse-perl/current/Changes
    branches/upstream/libmouse-perl/current/MANIFEST
    branches/upstream/libmouse-perl/current/META.yml
    branches/upstream/libmouse-perl/current/lib/Mouse.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Exporter.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Attribute.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Class.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Accessor.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Constructor.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Delegation.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Destructor.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Module.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Application.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Composite.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Method.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Meta/TypeConstraint.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Object.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/PurePerl.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Role.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Spec.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Tiny.pod
    branches/upstream/libmouse-perl/current/lib/Mouse/Util.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/Util/TypeConstraints.pm
    branches/upstream/libmouse-perl/current/lib/Mouse/XS.pod
    branches/upstream/libmouse-perl/current/xs-src/MouseTypeConstraints.xs

Modified: branches/upstream/libmouse-perl/current/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/Changes?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/Changes (original)
+++ branches/upstream/libmouse-perl/current/Changes Mon Mar 14 23:45:07 2011
@@ -1,4 +1,9 @@
 Revision history for Mouse
+
+0.91 2011-03-14 13:12:35
+    [CHANGES]
+    * $type_constraint->check() accepts extra arguments for extensibility
+      (requested by @lestrrat)
 
 0.90 2011-02-21 10:48:58
     [BUG FIXES]

Modified: branches/upstream/libmouse-perl/current/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/MANIFEST?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/MANIFEST (original)
+++ branches/upstream/libmouse-perl/current/MANIFEST Mon Mar 14 23:45:07 2011
@@ -142,6 +142,7 @@
 t/001_mouse/069-add-modifier.t
 t/001_mouse/070-inherit-role-attr.t
 t/001_mouse/071_tc_dualvar.t
+t/001_mouse/072_tc_extra_args.t
 t/001_mouse/100-meta-class.t
 t/001_mouse/101-meta-attribute.t
 t/001_mouse/301-bugs-non-mouse.t

Modified: branches/upstream/libmouse-perl/current/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/META.yml?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/META.yml (original)
+++ branches/upstream/libmouse-perl/current/META.yml Mon Mar 14 23:45:07 2011
@@ -31,4 +31,4 @@
 resources:
   license: http://dev.perl.org/licenses/
   repository: git://git.moose.perl.org/Mouse.git
-version: 0.90
+version: 0.91

Modified: branches/upstream/libmouse-perl/current/lib/Mouse.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse.pm Mon Mar 14 23:45:07 2011
@@ -3,7 +3,7 @@
 
 use Mouse::Exporter; # enables strict and warnings
 
-our $VERSION = '0.90';
+our $VERSION = '0.91';
 
 use Carp         ();
 use Scalar::Util ();
@@ -155,7 +155,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 SYNOPSIS
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Exporter.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Exporter.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Exporter.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Exporter.pm Mon Mar 14 23:45:07 2011
@@ -267,7 +267,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 SYNOPSIS
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Attribute.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Attribute.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Attribute.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Attribute.pm Mon Mar 14 23:45:07 2011
@@ -255,8 +255,15 @@
         if(exists $attribute->{$type}){
             my $generator = '_generate_' . $type;
             my $code      = $accessor_class->$generator($attribute, $metaclass);
-            $metaclass->add_method($attribute->{$type} => $code);
-            $attribute->associate_method($attribute->{$type});
+            my $name      = $attribute->{$type};
+# TODO: do something for compatibility
+#            if( $metaclass->name->can($name) ) {
+#                my $t = $metaclass->has_method($name) ? 'method' : 'function';
+#                Carp::cluck("You are overwriting a locally defined $t"
+#                    . " ($name) with an accessor");
+#            }
+            $metaclass->add_method($name => $code);
+            $attribute->associate_method($name);
         }
     }
 
@@ -342,7 +349,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 DESCRIPTION
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Class.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Class.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Class.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Class.pm Mon Mar 14 23:45:07 2011
@@ -470,7 +470,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 DESCRIPTION
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method.pm Mon Mar 14 23:45:07 2011
@@ -54,7 +54,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 DESCRIPTION
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Accessor.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Accessor.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Accessor.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Accessor.pm Mon Mar 14 23:45:07 2011
@@ -187,7 +187,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 SEE ALSO
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Constructor.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Constructor.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Constructor.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Constructor.pm Mon Mar 14 23:45:07 2011
@@ -232,7 +232,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 SEE ALSO
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Delegation.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Delegation.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Delegation.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Delegation.pm Mon Mar 14 23:45:07 2011
@@ -61,7 +61,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 SEE ALSO
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Destructor.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Destructor.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Destructor.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method/Destructor.pm Mon Mar 14 23:45:07 2011
@@ -65,7 +65,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 SEE ALSO
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Module.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Module.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Module.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Module.pm Mon Mar 14 23:45:07 2011
@@ -311,7 +311,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 DESCRIPTION
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role.pm Mon Mar 14 23:45:07 2011
@@ -131,7 +131,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 DESCRIPTION
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Application.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Application.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Application.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Application.pm Mon Mar 14 23:45:07 2011
@@ -209,7 +209,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 SEE ALSO
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Composite.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Composite.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Composite.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Composite.pm Mon Mar 14 23:45:07 2011
@@ -156,7 +156,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 SEE ALSO
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Method.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Method.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Method.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role/Method.pm Mon Mar 14 23:45:07 2011
@@ -23,7 +23,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 SEE ALSO
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Meta/TypeConstraint.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Meta/TypeConstraint.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/TypeConstraint.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/TypeConstraint.pm Mon Mar 14 23:45:07 2011
@@ -276,7 +276,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 DESCRIPTION
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Object.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Object.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Object.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Object.pm Mon Mar 14 23:45:07 2011
@@ -16,7 +16,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 METHODS
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/PurePerl.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/PurePerl.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/PurePerl.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/PurePerl.pm Mon Mar 14 23:45:07 2011
@@ -749,7 +749,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 SEE ALSO
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Role.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Role.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Role.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Role.pm Mon Mar 14 23:45:07 2011
@@ -1,7 +1,7 @@
 package Mouse::Role;
 use Mouse::Exporter; # enables strict and warnings
 
-our $VERSION = '0.90';
+our $VERSION = '0.91';
 
 use Carp         ();
 use Scalar::Util ();
@@ -137,7 +137,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 SYNOPSIS
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Spec.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Spec.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Spec.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Spec.pm Mon Mar 14 23:45:07 2011
@@ -2,7 +2,7 @@
 use strict;
 use warnings;
 
-our $VERSION = '0.90';
+our $VERSION = '0.91';
 
 our $MouseVersion = $VERSION;
 our $MooseVersion = '1.13';
@@ -19,7 +19,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 SYNOPSIS
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Tiny.pod
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Tiny.pod?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Tiny.pod (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Tiny.pod Mon Mar 14 23:45:07 2011
@@ -5,7 +5,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 DESCRIPTION
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Util.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Util.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Util.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Util.pm Mon Mar 14 23:45:07 2011
@@ -50,7 +50,7 @@
         },
     );
 
-    our $VERSION = '0.90';
+    our $VERSION = '0.91';
 
     my $xs = !(defined(&is_valid_class_name) || $ENV{MOUSE_PUREPERL} || $ENV{PERL_ONLY});
 
@@ -388,7 +388,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 SYNOPSIS
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/Util/TypeConstraints.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/Util/TypeConstraints.pm?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Util/TypeConstraints.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Util/TypeConstraints.pm Mon Mar 14 23:45:07 2011
@@ -432,7 +432,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head2 SYNOPSIS
 

Modified: branches/upstream/libmouse-perl/current/lib/Mouse/XS.pod
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/lib/Mouse/XS.pod?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/XS.pod (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/XS.pod Mon Mar 14 23:45:07 2011
@@ -5,7 +5,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.90
+This document describes Mouse version 0.91
 
 =head1 DESCRIPTION
 

Added: branches/upstream/libmouse-perl/current/t/001_mouse/072_tc_extra_args.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/t/001_mouse/072_tc_extra_args.t?rev=71422&op=file
==============================================================================
--- branches/upstream/libmouse-perl/current/t/001_mouse/072_tc_extra_args.t (added)
+++ branches/upstream/libmouse-perl/current/t/001_mouse/072_tc_extra_args.t Mon Mar 14 23:45:07 2011
@@ -1,0 +1,20 @@
+#!perl
+use strict;
+use Test::More tests => 2;
+use if 'Mouse' ne 'Mo' . 'use', 'Test::More', skip_all => 'Mouse only';
+use Mouse::Meta::TypeConstraint;
+
+my @args;
+my $tc = Mouse::Meta::TypeConstraint->new(
+    constraint => sub {
+        is_deeply \@args, \@_;
+    },
+);
+
+ at args = qw(foo bar baz);
+$tc->check( @args );
+
+ at args = (100, 200);
+$tc->check( @args );
+
+done_testing;

Modified: branches/upstream/libmouse-perl/current/xs-src/MouseTypeConstraints.xs
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/xs-src/MouseTypeConstraints.xs?rev=71422&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/xs-src/MouseTypeConstraints.xs (original)
+++ branches/upstream/libmouse-perl/current/xs-src/MouseTypeConstraints.xs Mon Mar 14 23:45:07 2011
@@ -10,6 +10,14 @@
 #define SvRXOK(sv) (SvROK(sv) && SvMAGICAL(SvRV(sv)) && mg_find(SvRV(sv), PERL_MAGIC_qr))
 #endif
 
+#define MY_CXT_KEY "Mouse::Util::TypeConstraints::_guts" XS_VERSION
+typedef struct sui_cxt{
+    GV* universal_isa;
+    GV* universal_can;
+    AV* tc_extra_args;
+} my_cxt_t;
+START_MY_CXT
+
 typedef int (*check_fptr_t)(pTHX_ SV* const data, SV* const sv);
 
 static
@@ -36,12 +44,21 @@
     else { /* custom */
         int ok;
         dSP;
+        dMY_CXT;
 
         ENTER;
         SAVETMPS;
 
         PUSHMARK(SP);
         XPUSHs(sv);
+        if( MY_CXT.tc_extra_args ) {
+            AV* const av  = MY_CXT.tc_extra_args;
+            I32 const len = AvFILLp(av) + 1;
+            int i;
+            for(i = 0; i < len; i++) {
+                XPUSHs( AvARRAY(av)[i] );
+            }
+        }
         PUTBACK;
 
         call_sv(tc_code, G_SCALAR);
@@ -345,12 +362,6 @@
  *  This class_type generator is taken from Scalar::Util::Instance
  */
 
-#define MY_CXT_KEY "Mouse::Util::TypeConstraints::_guts" XS_VERSION
-typedef struct sui_cxt{
-    GV* universal_isa;
-    GV* universal_can;
-} my_cxt_t;
-START_MY_CXT
 
 #define MG_klass_stash(mg) ((HV*)(mg)->mg_obj)
 #define MG_klass_pv(mg)    ((mg)->mg_ptr)
@@ -579,6 +590,8 @@
 
     MY_CXT.universal_can = gv_fetchpvs("UNIVERSAL::can", GV_ADD, SVt_PVCV);
     SvREFCNT_inc_simple_void_NN(MY_CXT.universal_can);
+
+    MY_CXT.tc_extra_args = NULL;
 }
 
 #define DEFINE_TC(name) mouse_tc_generate(aTHX_ "Mouse::Util::TypeConstraints::" STRINGIFY(name), CAT2(mouse_tc_, name), NULL)
@@ -804,7 +817,7 @@
 }
 
 bool
-check(SV* self, SV* sv)
+check(SV* self, SV* sv, ...)
 CODE:
 {
     SV* const check = get_slots(self, "compiled_type_constraint");
@@ -812,6 +825,17 @@
         mouse_throw_error(self, check,
             "'%"SVf"' has no compiled type constraint", self);
     }
+    if( items > 2 ) {
+        int i;
+        AV* av;
+        dMY_CXT;
+        SAVESPTR(MY_CXT.tc_extra_args);
+        av = MY_CXT.tc_extra_args = newAV_mortal();
+        av_extend(av, items - 3);
+        for(i = 2; i < items; i++) {
+            av_push(av, SvREFCNT_inc_NN( ST(i) ) );
+        }
+    }
     RETVAL = mouse_tc_check(aTHX_ check, sv) ? TRUE : FALSE;
 }
 OUTPUT:




More information about the Pkg-perl-cvs-commits mailing list