r55983 - 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/ t/900_bug/ xs-src/

ansgar-guest at users.alioth.debian.org ansgar-guest at users.alioth.debian.org
Mon Apr 12 02:16:50 UTC 2010


Author: ansgar-guest
Date: Mon Apr 12 02:16:41 2010
New Revision: 55983

URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=55983
Log:
[svn-upgrade] Integrating new upstream version, libmouse-perl (0.53)

Added:
    branches/upstream/libmouse-perl/current/t/900_bug/006_RT69939.t   (with props)
Removed:
    branches/upstream/libmouse-perl/current/t/900_bug/006_RT69939t
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/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/t/001_mouse/031-clone.t
    branches/upstream/libmouse-perl/current/xs-src/Mouse.xs

Modified: branches/upstream/libmouse-perl/current/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/Changes?rev=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/Changes (original)
+++ branches/upstream/libmouse-perl/current/Changes Mon Apr 12 02:16:41 2010
@@ -1,4 +1,8 @@
 Revision history for Mouse
+
+0.53 Sun Apr 11 11:39:03 2010
+    [BUG FIX]
+    * Mouse::Meta::Class could not clone objects with "required" attrs (gfx)
 
 0.52 Sat Mar 27 15:38:52 2010
     * Workaround Perl-RT#69939 (eval "use $module" in Perl_call_sv()

Modified: branches/upstream/libmouse-perl/current/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/MANIFEST?rev=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/MANIFEST (original)
+++ branches/upstream/libmouse-perl/current/MANIFEST Mon Apr 12 02:16:41 2010
@@ -286,7 +286,7 @@
 t/900_bug/003_RT50421.t
 t/900_bug/004_RT54203.t
 t/900_bug/005_large_int.t
-t/900_bug/006_RT69939t
+t/900_bug/006_RT69939.t
 t/990_deprecated/001-export_to_level.t
 t/990_deprecated/044-attribute-metaclass.t
 t/990_deprecated/047-attribute-metaclass-role.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=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/META.yml (original)
+++ branches/upstream/libmouse-perl/current/META.yml Mon Apr 12 02:16:41 2010
@@ -32,4 +32,4 @@
 resources:
   license: http://dev.perl.org/licenses/
   repository: git://git.moose.perl.org/Mouse.git
-version: 0.52
+version: 0.53

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=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse.pm Mon Apr 12 02:16:41 2010
@@ -3,7 +3,7 @@
 
 use Mouse::Exporter; # enables strict and warnings
 
-our $VERSION = '0.52';
+our $VERSION = '0.53';
 
 use Carp         qw(confess);
 use Scalar::Util qw(blessed);
@@ -160,7 +160,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =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=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Exporter.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Exporter.pm Mon Apr 12 02:16:41 2010
@@ -272,7 +272,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =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=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Attribute.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Attribute.pm Mon Apr 12 02:16:41 2010
@@ -401,7 +401,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =head1 METHODS
 

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=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Class.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Class.pm Mon Apr 12 02:16:41 2010
@@ -238,7 +238,7 @@
         || $class->throw_error("You must pass an instance of the metaclass (" . $class->name . "), not ($object)");
 
     my $cloned = bless { %$object }, ref $object;
-    $class->_initialize_object($cloned, $args);
+    $class->_initialize_object($cloned, $args, 1);
 
     return $cloned;
 }
@@ -486,7 +486,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =head1 METHODS
 

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=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Method.pm Mon Apr 12 02:16:41 2010
@@ -54,7 +54,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =head1 SEE ALSO
 

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=55983&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 Apr 12 02:16:41 2010
@@ -182,7 +182,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =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=55983&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 Apr 12 02:16:41 2010
@@ -235,7 +235,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =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=55983&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 Apr 12 02:16:41 2010
@@ -61,7 +61,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =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=55983&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 Apr 12 02:16:41 2010
@@ -55,7 +55,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =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=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Module.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Module.pm Mon Apr 12 02:16:41 2010
@@ -323,7 +323,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =head1 SEE ALSO
 

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=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/Role.pm Mon Apr 12 02:16:41 2010
@@ -312,7 +312,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =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=55983&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 Apr 12 02:16:41 2010
@@ -125,7 +125,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =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=55983&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 Apr 12 02:16:41 2010
@@ -23,7 +23,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =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=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Meta/TypeConstraint.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Meta/TypeConstraint.pm Mon Apr 12 02:16:41 2010
@@ -236,7 +236,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =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=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Object.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Object.pm Mon Apr 12 02:16:41 2010
@@ -17,7 +17,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =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=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/PurePerl.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/PurePerl.pm Mon Apr 12 02:16:41 2010
@@ -280,7 +280,7 @@
 }
 
 sub _initialize_object{
-    my($self, $object, $args, $ignore_triggers) = @_;
+    my($self, $object, $args, $is_cloning) = @_;
 
     my @triggers_queue;
 
@@ -298,7 +298,7 @@
                 push @triggers_queue, [ $attribute->trigger, $object->{$slot} ];
             }
         }
-        else { # no init arg
+        elsif(!$is_cloning) { # no init arg, noop while cloning
             if ($attribute->has_default || $attribute->has_builder) {
                 if (!$attribute->is_lazy) {
                     my $default = $attribute->default;
@@ -319,7 +319,7 @@
         }
     }
 
-    if(!$ignore_triggers){
+    if(@triggers_queue){
         foreach my $trigger_and_value(@triggers_queue){
             my($trigger, $value) = @{$trigger_and_value};
             $trigger->($object, $value);
@@ -720,7 +720,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =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=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Role.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Role.pm Mon Apr 12 02:16:41 2010
@@ -1,7 +1,7 @@
 package Mouse::Role;
 use Mouse::Exporter; # enables strict and warnings
 
-our $VERSION = '0.52';
+our $VERSION = '0.53';
 
 use Carp         qw(confess);
 use Scalar::Util qw(blessed);
@@ -145,7 +145,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =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=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Spec.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Spec.pm Mon Apr 12 02:16:41 2010
@@ -2,7 +2,7 @@
 use strict;
 use warnings;
 
-our $VERSION = '0.52';
+our $VERSION = '0.53';
 
 our $MouseVersion = $VERSION;
 our $MooseVersion = '0.93';
@@ -19,7 +19,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =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=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Tiny.pod (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Tiny.pod Mon Apr 12 02:16:41 2010
@@ -5,7 +5,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =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=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Util.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Util.pm Mon Apr 12 02:16:41 2010
@@ -52,7 +52,7 @@
     # Because Mouse::Util is loaded first in all the Mouse sub-modules,
     # XS loader is placed here, not in Mouse.pm.
 
-    our $VERSION = '0.52';
+    our $VERSION = '0.53';
 
     my $xs = !(exists $INC{'Mouse/PurePerl.pm'} || $ENV{MOUSE_PUREPERL});
 
@@ -365,7 +365,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =head1 IMPLEMENTATIONS FOR
 

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=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/Util/TypeConstraints.pm (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/Util/TypeConstraints.pm Mon Apr 12 02:16:41 2010
@@ -406,7 +406,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =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=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/lib/Mouse/XS.pod (original)
+++ branches/upstream/libmouse-perl/current/lib/Mouse/XS.pod Mon Apr 12 02:16:41 2010
@@ -5,7 +5,7 @@
 
 =head1 VERSION
 
-This document describes Mouse version 0.52
+This document describes Mouse version 0.53
 
 =head1 DESCRIPTION
 

Modified: branches/upstream/libmouse-perl/current/t/001_mouse/031-clone.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/t/001_mouse/031-clone.t?rev=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/t/001_mouse/031-clone.t (original)
+++ branches/upstream/libmouse-perl/current/t/001_mouse/031-clone.t Mon Apr 12 02:16:41 2010
@@ -1,11 +1,11 @@
 #!/usr/bin/env perl
 use strict;
 use warnings;
-use Test::More tests => 12;
+use Test::More;
 use Test::Exception;
 
 my %triggered;
-do {
+{
     package Foo;
     use Mouse;
 
@@ -38,7 +38,24 @@
         my ($self, @args) = @_;
         $self->meta->clone_object($self, @args);
     }
-};
+}
+
+{
+    package Bar;
+    use Mouse;
+
+    has id => (
+        is  => 'ro',
+        isa => 'Str',
+
+        required => 1,
+    );
+
+    sub clone {
+        my ($self, @args) = @_;
+        $self->meta->clone_object($self, @args);
+    }
+}
 
 my $foo = Foo->new(bar => [ 1, 2, 3 ], quuux => "indeed");
 
@@ -60,6 +77,13 @@
 is($clone->baz, "foo", "init_arg=undef means the attr is ignored");
 is($clone->quux, "yes", "clone uses init_arg and not attribute name");
 
+lives_and {
+    my $bar = Bar->new(id => 'xyz');
+    my $c   = $bar->clone;
+
+    is_deeply $bar, $c, "clone() with required attributes";
+};
+
 throws_ok {
     Foo->meta->clone_object("constant");
 } qr/You must pass an instance of the metaclass \(Foo\), not \(constant\)/;
@@ -68,4 +92,4 @@
     Foo->meta->clone_object(Foo->meta)
 } qr/You must pass an instance of the metaclass \(Foo\), not \(Mouse::Meta::Class=HASH\(\w+\)\)/;
 
-
+done_testing;

Added: branches/upstream/libmouse-perl/current/t/900_bug/006_RT69939.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/t/900_bug/006_RT69939.t?rev=55983&op=file
==============================================================================
--- branches/upstream/libmouse-perl/current/t/900_bug/006_RT69939.t (added)
+++ branches/upstream/libmouse-perl/current/t/900_bug/006_RT69939.t Mon Apr 12 02:16:41 2010
@@ -1,0 +1,38 @@
+#!perl -w
+
+package Foo;
+use Mouse;
+
+has bar => (
+    is => 'rw',
+
+    trigger => sub {
+        eval 'BEGIN{ die }';
+    },
+    default => sub {
+        eval 'BEGIN{ die }';
+        return 42;
+    },
+);
+
+sub BUILDARGS {
+    eval 'BEGIN{ die }';
+    return {};
+}
+
+sub BUILD {
+    eval 'BEGIN{ die }';
+}
+
+package main;
+
+use Test::More tests => 3;
+
+$@ = '(ERRSV)';
+
+my $foo = Foo->new;
+isa_ok $foo, 'Foo';
+is $foo->bar, 42;
+$foo->bar(100);
+is $foo->bar, 100;
+note("\$@=$@");

Propchange: branches/upstream/libmouse-perl/current/t/900_bug/006_RT69939.t
------------------------------------------------------------------------------
    svn:executable = *

Modified: branches/upstream/libmouse-perl/current/xs-src/Mouse.xs
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libmouse-perl/current/xs-src/Mouse.xs?rev=55983&op=diff
==============================================================================
--- branches/upstream/libmouse-perl/current/xs-src/Mouse.xs (original)
+++ branches/upstream/libmouse-perl/current/xs-src/Mouse.xs Mon Apr 12 02:16:41 2010
@@ -291,10 +291,10 @@
 
 
 static void
-mouse_class_initialize_object(pTHX_ SV* const meta, SV* const object, HV* const args, bool const ignore_triggers) {
+mouse_class_initialize_object(pTHX_ SV* const meta, SV* const object, HV* const args, bool const is_cloning) {
     AV* const xc    = mouse_get_xc(aTHX_ meta);
     AV* const attrs = MOUSE_xc_attrall(xc);
-    I32 len         = AvFILLp(attrs) + 1;
+    I32 const len   = AvFILLp(attrs) + 1;
     I32 i;
     AV* triggers_queue = NULL;
     I32 used = 0;
@@ -305,10 +305,6 @@
 
     if(mg_find((SV*)args, PERL_MAGIC_tied)){
         croak("You cannot use tied HASH reference as initializing arguments");
-    }
-
-    if(!ignore_triggers){
-        triggers_queue = newAV_mortal();
     }
 
     /* for each attribute */
@@ -330,16 +326,19 @@
             if(SvROK(value) && flags & MOUSEf_ATTR_IS_WEAK_REF){
                 weaken_slot(object, slot);
             }
-            if(flags & MOUSEf_ATTR_HAS_TRIGGER && triggers_queue){
+            if(flags & MOUSEf_ATTR_HAS_TRIGGER){
                 AV* const pair = newAV();
                 av_push(pair, newSVsv( mcall0s(attr, "trigger") ));
                 av_push(pair, newSVsv(value));
 
+                if(!triggers_queue) {
+                    triggers_queue = newAV_mortal();
+                }
                 av_push(triggers_queue, (SV*)pair);
             }
             used++;
         }
-        else { /* no init arg */
+        else if(!is_cloning){ /* no init arg, noop while cloning */
             if(flags & (MOUSEf_ATTR_HAS_DEFAULT | MOUSEf_ATTR_HAS_BUILDER)){
                 if(!(flags & MOUSEf_ATTR_IS_LAZY)){
                     mouse_xa_set_default(aTHX_ xa, object);
@@ -356,7 +355,7 @@
     }
 
     if(triggers_queue){
-        len = AvFILLp(triggers_queue) + 1;
+        I32 const len = AvFILLp(triggers_queue) + 1;
         for(i = 0; i < len; i++){
             AV* const pair    = (AV*)AvARRAY(triggers_queue)[i];
             SV* const trigger = AvARRAY(pair)[0];
@@ -584,10 +583,10 @@
     RETVAL
 
 void
-_initialize_object(SV* meta, SV* object, HV* args, bool ignore_triggers = FALSE)
-CODE:
-{
-    mouse_class_initialize_object(aTHX_ meta, object, args, ignore_triggers);
+_initialize_object(SV* meta, SV* object, HV* args, bool is_cloning = FALSE)
+CODE:
+{
+    mouse_class_initialize_object(aTHX_ meta, object, args, is_cloning);
 }
 
 MODULE = Mouse  PACKAGE = Mouse::Meta::Role




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