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