r45227 - in /trunk/libmouse-perl: ./ author/ debian/ lib/ lib/Mouse/ lib/Mouse/Meta/ lib/Mouse/Meta/Method/ t/990_deprecated/

jawnsy-guest at users.alioth.debian.org jawnsy-guest at users.alioth.debian.org
Fri Oct 2 12:44:40 UTC 2009


Author: jawnsy-guest
Date: Fri Oct  2 12:44:34 2009
New Revision: 45227

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=45227
Log:
New upstream version integration

Added:
    trunk/libmouse-perl/author/test-externals.pl
      - copied unchanged from r45226, branches/upstream/libmouse-perl/current/author/test-externals.pl
Modified:
    trunk/libmouse-perl/Changes
    trunk/libmouse-perl/MANIFEST
    trunk/libmouse-perl/MANIFEST.SKIP
    trunk/libmouse-perl/META.yml
    trunk/libmouse-perl/debian/changelog
    trunk/libmouse-perl/debian/control
    trunk/libmouse-perl/lib/Mouse.pm
    trunk/libmouse-perl/lib/Mouse/Meta/Attribute.pm
    trunk/libmouse-perl/lib/Mouse/Meta/Method/Constructor.pm
    trunk/libmouse-perl/lib/Mouse/Meta/Module.pm
    trunk/libmouse-perl/lib/Mouse/Meta/Role.pm
    trunk/libmouse-perl/lib/Mouse/Role.pm
    trunk/libmouse-perl/lib/Mouse/Spec.pm
    trunk/libmouse-perl/lib/Mouse/Tiny.pm
    trunk/libmouse-perl/lib/Mouse/Util.pm
    trunk/libmouse-perl/t/990_deprecated/044-attribute-metaclass.t

Modified: trunk/libmouse-perl/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/Changes?rev=45227&op=diff
==============================================================================
--- trunk/libmouse-perl/Changes (original)
+++ trunk/libmouse-perl/Changes Fri Oct  2 12:44:34 2009
@@ -1,4 +1,11 @@
 Revision history for Mouse
+
+0.37 Mon Sep 28 10:48:27 2009
+    * Ensure backward compatibility by author/test-externa.pl (gfx)
+
+    * Change the algorithm of has_method() for backward compatibility (gfx)
+
+    * $ENV{MOUSE_VERBOSE}=1 for Moose-compatible warnings (gfx)
 
 0.36 Sun Sep 27 16:53:06 2009
     * Fix an issue that breaks backward compatibility (gfx)

Modified: trunk/libmouse-perl/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/MANIFEST?rev=45227&op=diff
==============================================================================
--- trunk/libmouse-perl/MANIFEST (original)
+++ trunk/libmouse-perl/MANIFEST Fri Oct  2 12:44:34 2009
@@ -2,6 +2,7 @@
 author/generate-mouse-tiny.pl
 author/he-profile.pl
 author/munge-tests-for-moose.pl
+author/test-externals.pl
 benchmarks/basic.pl
 benchmarks/modifiers.pl
 Changes

Modified: trunk/libmouse-perl/MANIFEST.SKIP
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/MANIFEST.SKIP?rev=45227&op=diff
==============================================================================
--- trunk/libmouse-perl/MANIFEST.SKIP (original)
+++ trunk/libmouse-perl/MANIFEST.SKIP Fri Oct  2 12:44:34 2009
@@ -44,3 +44,4 @@
 \.out$
 
 author/benchmarks
+author/externals

Modified: trunk/libmouse-perl/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/META.yml?rev=45227&op=diff
==============================================================================
--- trunk/libmouse-perl/META.yml (original)
+++ trunk/libmouse-perl/META.yml Fri Oct  2 12:44:34 2009
@@ -1,7 +1,7 @@
 ---
 abstract: 'Moose minus the antlers'
 author:
-  - 'Shawn M Moore, C<< <sartak at gmail.com> >>'
+  - 'Shawn M Moore, <sartak at gmail.com>'
 build_requires:
   ExtUtils::MakeMaker: 6.42
   Test::Exception: 0.27
@@ -25,4 +25,4 @@
   perl: 5.6.2
 resources:
   license: http://dev.perl.org/licenses/
-version: 0.36
+version: 0.37

Modified: trunk/libmouse-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/debian/changelog?rev=45227&op=diff
==============================================================================
--- trunk/libmouse-perl/debian/changelog (original)
+++ trunk/libmouse-perl/debian/changelog Fri Oct  2 12:44:34 2009
@@ -1,4 +1,4 @@
-libmouse-perl (0.36-1) UNRELEASED; urgency=low
+libmouse-perl (0.37-1) UNRELEASED; urgency=low
 
   TODO: this builds properly with the newest Moose, so I required that.
   I need to test this to determine the oldest compatible version of Moose
@@ -10,12 +10,11 @@
   * Standards-Version 3.8.3 (no changes)
   * Added myself to Uploaders and Copyright
   * Use short debhelper rules format
-  * New upstream release
 
   [ Ryan Niebur ]
   * Update ryan52's email address
 
- -- Jonathan Yu <jawnsy at cpan.org>  Sun, 27 Sep 2009 08:40:36 -0400
+ -- Jonathan Yu <jawnsy at cpan.org>  Fri, 02 Oct 2009 04:58:45 -0400
 
 libmouse-perl (0.27-1) unstable; urgency=low
 

Modified: trunk/libmouse-perl/debian/control
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/debian/control?rev=45227&op=diff
==============================================================================
--- trunk/libmouse-perl/debian/control (original)
+++ trunk/libmouse-perl/debian/control Fri Oct  2 12:44:34 2009
@@ -3,8 +3,9 @@
 Priority: optional
 Build-Depends: debhelper (>= 7)
 Build-Depends-Indep: perl, libmoose-perl (>= 0.92), libtest-exception-perl,
- libclass-method-modifiers-perl, libtest-output-perl,
- perl-modules (>= 5.10.1) | libtest-simple-perl (>= 0.88)
+ libclass-method-modifiers-perl, libtest-output-perl, libtest-deep-perl,
+ perl-modules (>= 5.10.1) | libtest-simple-perl (>= 0.88),
+ libregexp-common-perl, liblocale-us-perl
 Maintainer: Debian Perl Group <pkg-perl-maintainers at lists.alioth.debian.org>
 Uploaders: Gunnar Wolf <gwolf at debian.org>, gregor herrmann <gregoa at debian.org>,
  Jose Luis Rivas <ghostbar38 at gmail.com>, Brian Cassidy <brian.cassidy at gmail.com>,

Modified: trunk/libmouse-perl/lib/Mouse.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse.pm?rev=45227&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse.pm (original)
+++ trunk/libmouse-perl/lib/Mouse.pm Fri Oct  2 12:44:34 2009
@@ -4,14 +4,14 @@
 use strict;
 use warnings;
 
-our $VERSION = '0.36';
+our $VERSION = '0.37';
 
 use Exporter;
 
 use Carp 'confess';
 use Scalar::Util 'blessed';
 
-use Mouse::Util qw(load_class is_class_loaded not_supported);
+use Mouse::Util qw(load_class is_class_loaded get_code_package not_supported);
 
 use Mouse::Meta::Module;
 use Mouse::Meta::Class;
@@ -190,7 +190,7 @@
         my $code;
         if(exists $is_removable{$keyword}
             && ($code = $caller->can($keyword))
-            && (Mouse::Util::get_code_info($code))[0] eq __PACKAGE__){
+            && get_code_package($code) eq __PACKAGE__){
 
             delete $stash->{$keyword};
         }
@@ -454,9 +454,9 @@
 
 =head1 AUTHORS
 
-Shawn M Moore, C<< <sartak at gmail.com> >>
-
-Yuval Kogman, C<< <nothingmuch at woobling.org> >>
+Shawn M Moore, E<lt>sartak at gmail.comE<gt>
+
+Yuval Kogman, E<lt>nothingmuch at woobling.orgE<gt>
 
 tokuhirom
 
@@ -464,7 +464,7 @@
 
 wu-lee
 
-Goro Fuji (gfx) C<< <gfuji at cpan.org> >>
+Goro Fuji (gfx) E<lt>gfuji at cpan.orgE<gt>
 
 with plenty of code borrowed from L<Class::MOP> and L<Moose>
 

Modified: trunk/libmouse-perl/lib/Mouse/Meta/Attribute.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Meta/Attribute.pm?rev=45227&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Meta/Attribute.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Meta/Attribute.pm Fri Oct  2 12:44:34 2009
@@ -31,8 +31,12 @@
     my $can_be_required = defined( $args->{init_arg} );
 
     if(exists $args->{builder}){
+        # XXX:
+        # Moose refuses a CODE ref builder, but Mouse doesn't for backward compatibility
+        # This feature will be changed in a future. (gfx)
         $class->throw_error('builder must be a defined scalar value which is a method name')
-            if ref $args->{builder} || !(defined $args->{builder});
+            #if ref $args->{builder} || !defined $args->{builder};
+            if !defined $args->{builder};
 
         $can_be_required++;
     }

Modified: trunk/libmouse-perl/lib/Mouse/Meta/Method/Constructor.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Meta/Method/Constructor.pm?rev=45227&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Meta/Method/Constructor.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Meta/Method/Constructor.pm Fri Oct  2 12:44:34 2009
@@ -182,6 +182,7 @@
     my @code;
     for my $class ($metaclass->linearized_isa) {
         no strict 'refs';
+        no warnings 'once';
 
         if (*{ $class . '::BUILD' }{CODE}) {
             unshift  @code, qq{${class}::BUILD(\$instance, \$args);};

Modified: trunk/libmouse-perl/lib/Mouse/Meta/Module.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Meta/Module.pm?rev=45227&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Meta/Module.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Meta/Module.pm Fri Oct  2 12:44:34 2009
@@ -5,7 +5,7 @@
 use Carp ();
 use Scalar::Util qw/blessed weaken/;
 
-use Mouse::Util qw/:meta get_code_info not_supported load_class/;
+use Mouse::Util qw/:meta get_code_package not_supported load_class/;
 
 {
     my %METACLASS_CACHE;
@@ -97,13 +97,17 @@
     *{ $pkg . '::' . $name } = $code;
 }
 
-sub _code_is_mine { # taken from Class::MOP::Class
-    my ( $self, $code ) = @_;
-
-    my ( $code_package, $code_name ) = get_code_info($code);
-
-    return $code_package && $code_package eq $self->{package}
-        || ( $code_package eq 'constant' && $code_name eq '__ANON__' );
+# XXX: for backward compatibility
+my %foreign = map{ $_ => undef } qw(
+    Mouse Mouse::Role Mouse::Util Mouse::Util::TypeConstraints
+    Carp Scalar::Util
+);
+sub _code_is_mine{
+    my($self, $code) = @_;
+
+    my $package = get_code_package($code);
+
+    return !exists $foreign{$package};
 }
 
 sub has_method {
@@ -111,7 +115,7 @@
 
     return 1 if $self->{methods}->{$method_name};
 
-    my $code = $self->{package}->can($method_name);
+    my $code = do{ no strict 'refs'; *{$self->{package} . '::' . $method_name}{CODE} };
 
     return $code && $self->_code_is_mine($code);
 }

Modified: trunk/libmouse-perl/lib/Mouse/Meta/Role.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Meta/Role.pm?rev=45227&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Meta/Role.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Meta/Role.pm Fri Oct  2 12:44:34 2009
@@ -2,7 +2,7 @@
 use strict;
 use warnings;
 
-use Mouse::Util qw(:meta not_supported english_list);
+use Mouse::Util qw(:meta not_supported english_list get_code_info);
 use Mouse::Meta::Module;
 our @ISA = qw(Mouse::Meta::Module);
 

Modified: trunk/libmouse-perl/lib/Mouse/Role.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Role.pm?rev=45227&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Role.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Role.pm Fri Oct  2 12:44:34 2009
@@ -7,7 +7,7 @@
 use Carp 'confess';
 use Scalar::Util 'blessed';
 
-use Mouse::Util qw(load_class not_supported);
+use Mouse::Util qw(load_class get_code_package not_supported);
 use Mouse ();
 
 our @ISA = qw(Exporter);
@@ -150,7 +150,7 @@
         my $code;
         if(exists $is_removable{$keyword}
             && ($code = $caller->can($keyword))
-            && (Mouse::Util::get_code_info($code))[0] eq __PACKAGE__){
+            && get_code_package($code) eq __PACKAGE__){
 
             delete $stash->{$keyword};
         }

Modified: trunk/libmouse-perl/lib/Mouse/Spec.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Spec.pm?rev=45227&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Spec.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Spec.pm Fri Oct  2 12:44:34 2009
@@ -2,7 +2,7 @@
 use strict;
 use warnings;
 
-our $VERSION = '0.36';
+our $VERSION = '0.37';
 
 our $MouseVersion = $VERSION;
 our $MooseVersion = '0.90';

Modified: trunk/libmouse-perl/lib/Mouse/Tiny.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Tiny.pm?rev=45227&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Tiny.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Tiny.pm Fri Oct  2 12:44:34 2009
@@ -8,15 +8,15 @@
 $INC{'Mouse.pm'} = __FILE__;
 $INC{'Mouse/Object.pm'} = __FILE__;
 $INC{'Mouse/Role.pm'} = __FILE__;
+$INC{'Mouse/Util.pm'} = __FILE__;
+$INC{'Mouse/TypeRegistry.pm'} = __FILE__;
 $INC{'Mouse/Spec.pm'} = __FILE__;
-$INC{'Mouse/TypeRegistry.pm'} = __FILE__;
-$INC{'Mouse/Util.pm'} = __FILE__;
 $INC{'Mouse/Meta/Attribute.pm'} = __FILE__;
 $INC{'Mouse/Meta/Class.pm'} = __FILE__;
+$INC{'Mouse/Meta/Role.pm'} = __FILE__;
+$INC{'Mouse/Meta/TypeConstraint.pm'} = __FILE__;
 $INC{'Mouse/Meta/Method.pm'} = __FILE__;
 $INC{'Mouse/Meta/Module.pm'} = __FILE__;
-$INC{'Mouse/Meta/Role.pm'} = __FILE__;
-$INC{'Mouse/Meta/TypeConstraint.pm'} = __FILE__;
 $INC{'Mouse/Meta/Method/Accessor.pm'} = __FILE__;
 $INC{'Mouse/Meta/Method/Constructor.pm'} = __FILE__;
 $INC{'Mouse/Meta/Method/Destructor.pm'} = __FILE__;
@@ -32,6 +32,7 @@
 use Exporter;
 
 use Carp qw(confess);
+use B ();
 
 use constant _MOUSE_VERBOSE => !!$ENV{MOUSE_VERBOSE};
 
@@ -48,6 +49,8 @@
 
     get_linear_isa
     get_code_info
+
+    get_code_package
 
     not_supported
 
@@ -126,8 +129,6 @@
         my ($coderef) = @_;
         ref($coderef) or return;
 
-        require B;
-
         my $cv = B::svref_2object($coderef);
         $cv->isa('B::CV') or return;
 
@@ -135,6 +136,18 @@
         $gv->isa('B::GV') or return;
 
         return ($gv->STASH->NAME, $gv->NAME);
+    }
+
+    sub get_code_package{
+        my($coderef) = @_;
+
+        my $cv = B::svref_2object($coderef);
+        $cv->isa('B::CV') or return '';
+
+        my $gv = $cv->GV;
+        $gv->isa('B::GV') or return '';
+
+        return $gv->STASH->NAME;
     }
 }
 
@@ -346,14 +359,14 @@
 use strict;
 use warnings;
 
-our $VERSION = '0.36';
+our $VERSION = '0.37';
 
 use Exporter;
 
 use Carp 'confess';
 use Scalar::Util 'blessed';
 
-BEGIN { Mouse::Util->import(qw(load_class is_class_loaded not_supported)) }
+BEGIN { Mouse::Util->import(qw(load_class is_class_loaded get_code_package not_supported)) }
 
 BEGIN { Mouse::Util::TypeConstraints->import(()) }
 
@@ -527,7 +540,7 @@
         my $code;
         if(exists $is_removable{$keyword}
             && ($code = $caller->can($keyword))
-            && (Mouse::Util::get_code_info($code))[0] eq __PACKAGE__){
+            && get_code_package($code) eq __PACKAGE__){
 
             delete $stash->{$keyword};
         }
@@ -564,8 +577,12 @@
     my $can_be_required = defined( $args->{init_arg} );
 
     if(exists $args->{builder}){
+        # XXX:
+        # Moose refuses a CODE ref builder, but Mouse doesn't for backward compatibility
+        # This feature will be changed in a future. (gfx)
         $class->throw_error('builder must be a defined scalar value which is a method name')
-            if ref $args->{builder} || !(defined $args->{builder});
+            #if ref $args->{builder} || !defined $args->{builder};
+            if !defined $args->{builder};
 
         $can_be_required++;
     }
@@ -1737,6 +1754,7 @@
     my @code;
     for my $class ($metaclass->linearized_isa) {
         no strict 'refs';
+        no warnings 'once';
 
         if (*{ $class . '::BUILD' }{CODE}) {
             unshift  @code, qq{${class}::BUILD(\$instance, \$args);};
@@ -1787,7 +1805,7 @@
 use Carp ();
 use Scalar::Util qw/blessed weaken/;
 
-BEGIN { Mouse::Util->import(qw/:meta get_code_info not_supported load_class/) }
+BEGIN { Mouse::Util->import(qw/:meta get_code_package not_supported load_class/) }
 
 {
     my %METACLASS_CACHE;
@@ -1879,13 +1897,17 @@
     *{ $pkg . '::' . $name } = $code;
 }
 
-sub _code_is_mine { # taken from Class::MOP::Class
-    my ( $self, $code ) = @_;
-
-    my ( $code_package, $code_name ) = get_code_info($code);
-
-    return $code_package && $code_package eq $self->{package}
-        || ( $code_package eq 'constant' && $code_name eq '__ANON__' );
+# XXX: for backward compatibility
+my %foreign = map{ $_ => undef } qw(
+    Mouse Mouse::Role Mouse::Util Mouse::Util::TypeConstraints
+    Carp Scalar::Util
+);
+sub _code_is_mine{
+    my($self, $code) = @_;
+
+    my $package = get_code_package($code);
+
+    return !exists $foreign{$package};
 }
 
 sub has_method {
@@ -1893,7 +1915,7 @@
 
     return 1 if $self->{methods}->{$method_name};
 
-    my $code = $self->{package}->can($method_name);
+    my $code = do{ no strict 'refs'; *{$self->{package} . '::' . $method_name}{CODE} };
 
     return $code && $self->_code_is_mine($code);
 }
@@ -2080,7 +2102,7 @@
 use strict;
 use warnings;
 
-BEGIN { Mouse::Util->import(qw(:meta not_supported english_list)) }
+BEGIN { Mouse::Util->import(qw(:meta not_supported english_list get_code_info)) }
 our @ISA = qw(Mouse::Meta::Module);
 
 sub method_metaclass(){ 'Mouse::Meta::Role::Method' } # required for get_method()
@@ -2659,7 +2681,7 @@
 use Carp 'confess';
 use Scalar::Util 'blessed';
 
-BEGIN { Mouse::Util->import(qw(load_class not_supported)) }
+BEGIN { Mouse::Util->import(qw(load_class get_code_package not_supported)) }
 BEGIN { Mouse->import(()) }
 
 our @ISA = qw(Exporter);
@@ -2802,7 +2824,7 @@
         my $code;
         if(exists $is_removable{$keyword}
             && ($code = $caller->can($keyword))
-            && (Mouse::Util::get_code_info($code))[0] eq __PACKAGE__){
+            && get_code_package($code) eq __PACKAGE__){
 
             delete $stash->{$keyword};
         }
@@ -2814,7 +2836,7 @@
 use strict;
 use warnings;
 
-our $VERSION = '0.36';
+our $VERSION = '0.37';
 
 our $MouseVersion = $VERSION;
 our $MooseVersion = '0.90';

Modified: trunk/libmouse-perl/lib/Mouse/Util.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/lib/Mouse/Util.pm?rev=45227&op=diff
==============================================================================
--- trunk/libmouse-perl/lib/Mouse/Util.pm (original)
+++ trunk/libmouse-perl/lib/Mouse/Util.pm Fri Oct  2 12:44:34 2009
@@ -5,6 +5,7 @@
 use Exporter;
 
 use Carp qw(confess);
+use B ();
 
 use constant _MOUSE_VERBOSE => !!$ENV{MOUSE_VERBOSE};
 
@@ -21,6 +22,8 @@
 
     get_linear_isa
     get_code_info
+
+    get_code_package
 
     not_supported
 
@@ -99,8 +102,6 @@
         my ($coderef) = @_;
         ref($coderef) or return;
 
-        require B;
-
         my $cv = B::svref_2object($coderef);
         $cv->isa('B::CV') or return;
 
@@ -108,6 +109,18 @@
         $gv->isa('B::GV') or return;
 
         return ($gv->STASH->NAME, $gv->NAME);
+    }
+
+    sub get_code_package{
+        my($coderef) = @_;
+
+        my $cv = B::svref_2object($coderef);
+        $cv->isa('B::CV') or return '';
+
+        my $gv = $cv->GV;
+        $gv->isa('B::GV') or return '';
+
+        return $gv->STASH->NAME;
     }
 }
 
@@ -337,7 +350,7 @@
 
 =head2 Class::MOP
 
-=head2 C<< is_class_loaded(ClassName) -> Bool >>
+=head3 C<< is_class_loaded(ClassName) -> Bool >>
 
 Returns whether C<ClassName> is actually loaded or not. It uses a heuristic which
 involves checking for the existence of C<$VERSION>, C<@ISA>, and any

Modified: trunk/libmouse-perl/t/990_deprecated/044-attribute-metaclass.t
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libmouse-perl/t/990_deprecated/044-attribute-metaclass.t?rev=45227&op=diff
==============================================================================
--- trunk/libmouse-perl/t/990_deprecated/044-attribute-metaclass.t (original)
+++ trunk/libmouse-perl/t/990_deprecated/044-attribute-metaclass.t Fri Oct  2 12:44:34 2009
@@ -31,6 +31,15 @@
         return $attr;
     };
 
+    around 'canonicalize_args' => sub {
+        my ($next, $self, $name, %args) = @_;
+
+        %args = $next->($self, $name, %args);
+        $args{is}  = 'rw'  unless exists $args{is};
+
+        return %args;
+    };
+
     package # hide me from search.cpan.org
         Mouse::Meta::Attribute::Custom::Number;
     sub register_implementation { 'MouseX::AttributeHelpers::Number' }
@@ -40,9 +49,8 @@
     package Klass;
     use Mouse;
 
-    has 'i' => (
+    has 'number' => (
         metaclass => 'Number',
-        is => 'rw',
         isa => 'Int',
         provides => {
             'add' => 'add_number'
@@ -50,8 +58,8 @@
     );
 };
 
-can_ok 'Klass', 'add_number';
-my $k = Klass->new(i=>3);
+can_ok 'Klass', 'add_number', 'number';
+my $k = Klass->new(number => 3);
 $k->add_number(4);
-is $k->i, 7;
+is $k->number, 7;
 




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