Merge remote branch 'origin/master' into merge-0.74
Fuji, Goro [Mon, 27 Sep 2010 05:39:08 +0000 (14:39 +0900)]
Conflicts:
lib/Mouse/Meta/Method/Constructor.pm

28 files changed:
Changes
Makefile.PL
lib/Mouse.pm
lib/Mouse/Exporter.pm
lib/Mouse/Meta/Attribute.pm
lib/Mouse/Meta/Class.pm
lib/Mouse/Meta/Method.pm
lib/Mouse/Meta/Method/Accessor.pm
lib/Mouse/Meta/Method/Constructor.pm
lib/Mouse/Meta/Method/Delegation.pm
lib/Mouse/Meta/Method/Destructor.pm
lib/Mouse/Meta/Module.pm
lib/Mouse/Meta/Role.pm
lib/Mouse/Meta/Role/Application.pm
lib/Mouse/Meta/Role/Composite.pm
lib/Mouse/Meta/Role/Method.pm
lib/Mouse/Meta/TypeConstraint.pm
lib/Mouse/Object.pm
lib/Mouse/PurePerl.pm
lib/Mouse/Role.pm
lib/Mouse/Spec.pm
lib/Mouse/Tiny.pod
lib/Mouse/Util.pm
lib/Mouse/Util/TypeConstraints.pm
lib/Mouse/XS.pod
t/001_mouse/060-threads.t
t/400_mouse_util/002_moose_util_does_role.t
t/lib/MooseCompat.pm

diff --git a/Changes b/Changes
index 94aeb3d..26cc6b0 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,12 @@
 Revision history for Mouse
 
+0.74 Sun Sep 26 11:46:29 2010
+    [BUG FIXES]
+    * Workaround Test::Builder2 problem again.
+      Loading Mouse before loading Test::Builder 2.00_01 could causes SEGV,
+      so I ensure to load Test::Builder first.
+    * Fix some compatibility issues on perl 5.6.2
+
 0.73 Sat Sep 25 21:49:30 2010
     [BUG FIXES]
     * Resolve RT #61613 (Brett)
index 8b5058e..5ee27a7 100644 (file)
@@ -22,7 +22,9 @@ all_from 'lib/Mouse.pm';
 # > Fixed looks_like_number(undef) to return false for perl >= 5.009002
 requires 'Scalar::Util' => 1.14;
 
-test_requires 'Test::More'=> 0.88;
+test_requires 'Test::More'                  => 0.88;
+test_requires 'Test::Requires'              => 0.06; # works on 5.6.0
+test_requires 'Test::Exception::LessClever' => 0.005;
 
 # to keep zero-dependencies
 include 'Test::Exception::LessClever';
index da87978..ce08c8d 100644 (file)
@@ -3,7 +3,7 @@ use 5.006_002;
 
 use Mouse::Exporter; # enables strict and warnings
 
-our $VERSION = '0.73';
+our $VERSION = '0.74';
 
 use Carp         qw(confess);
 use Scalar::Util qw(blessed);
@@ -155,7 +155,7 @@ Mouse - Moose minus the antlers
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 SYNOPSIS
 
index c570657..fe7a2ca 100644 (file)
@@ -268,7 +268,7 @@ Mouse::Exporter - make an import() and unimport() just like Mouse.pm
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 SYNOPSIS
 
index 4ef21db..3a32b74 100644 (file)
@@ -340,7 +340,7 @@ Mouse::Meta::Attribute - The Mouse attribute metaclass
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 DESCRIPTION
 
index 79af285..462029a 100644 (file)
@@ -87,7 +87,7 @@ sub inherit_from_foreign_class {
     my($class, $super) = @_;
     Carp::carp("You inherit from non-Mouse class ($super),"
         . " but it is unlikely to work correctly."
-        . " Please concider to use MouseX::Foreign");
+        . " Please consider using MouseX::Foreign");
     return;
 }
 
@@ -461,7 +461,7 @@ Mouse::Meta::Class - The Mouse class metaclass
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 DESCRIPTION
 
index ed3477a..d725d53 100644 (file)
@@ -54,7 +54,7 @@ Mouse::Meta::Method - A Mouse Method metaclass
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 DESCRIPTION
 
index 5ed42f3..3f7b6b4 100644 (file)
@@ -1,6 +1,8 @@
 package Mouse::Meta::Method::Accessor;
 use Mouse::Util qw(:meta); # enables strict and warnings
 
+use constant _MOUSE_DEBUG => !!$ENV{MOUSE_DEBUG};
+
 sub _inline_slot{
     my(undef, $self_var, $attr_name) = @_;
     return sprintf '%s->{q{%s}}', $self_var, $attr_name;
@@ -122,7 +124,7 @@ sub _generate_accessor_any{
 
     $accessor .= "return $slot;\n}\n";
 
-    #print $accessor, "\n";
+    warn $accessor if _MOUSE_DEBUG;
     my $code;
     my $e = do{
         local $@;
@@ -181,7 +183,7 @@ Mouse::Meta::Method::Accessor - A Mouse method generator for accessors
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 SEE ALSO
 
index 4c362f5..c74d359 100644 (file)
@@ -1,6 +1,8 @@
 package Mouse::Meta::Method::Constructor;
 use Mouse::Util qw(:meta); # enables strict and warnings
 
+use constant _MOUSE_DEBUG => !!$ENV{MOUSE_DEBUG};
+
 sub _inline_slot{
     my(undef, $self_var, $attr_name) = @_;
     return sprintf '%s->{q{%s}}', $self_var, $attr_name;
@@ -15,9 +17,8 @@ sub _generate_constructor {
     my $buildargs     = $class->_generate_BUILDARGS($metaclass);
     my $initializer   = $metaclass->{_mouse_cache}{_initialize_object} ||=
        $class->_generate_initialize_object($metaclass);
-
-    my $source = sprintf(<<'EOT', __LINE__, __FILE__, $metaclass->name, $buildargs, $buildall);
-#line %d %s
+    my $source = sprintf(<<'EOT', __FILE__, $metaclass->name, $buildargs, $buildall);
+#line 1 "%s"
         package %s;
         sub {
             my $class = shift;
@@ -32,7 +33,7 @@ sub _generate_constructor {
             return $instance;
         }
 EOT
-    #warn $source;
+    warn $source if _MOUSE_DEBUG;
     my $body;
     my $e = do{
         local $@;
@@ -167,8 +168,8 @@ sub _generate_initialize_object {
         push    @res, q{$_->[0]->($instance, $_->[1]) for @triggers;};
     }
 
-    my $source = sprintf <<'EOT', __LINE__, __FILE__, $metaclass->name, join "\n", @res;
-#line %d %s
+    my $source = sprintf <<'EOT', __FILE__, $metaclass->name, join "\n", @res;
+#line 1 "%s"
     package %s;
     sub {
         my($meta, $instance, $args, $is_cloning) = @_;
@@ -176,7 +177,7 @@ sub _generate_initialize_object {
         return $instance;
     }
 EOT
-    warn $source if $ENV{MOUSE_DEBUG};
+    warn $source if _MOUSE_DEBUG;
     my $body;
     my $e = do {
         local $@;
@@ -231,7 +232,7 @@ Mouse::Meta::Method::Constructor - A Mouse method generator for constructors
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 SEE ALSO
 
index e34b13f..3f9f009 100644 (file)
@@ -62,7 +62,7 @@ Mouse::Meta::Method::Delegation - A Mouse method generator for delegation method
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 SEE ALSO
 
index 8b50f82..247c8ed 100644 (file)
@@ -1,39 +1,51 @@
 package Mouse::Meta::Method::Destructor;
 use Mouse::Util qw(:meta); # enables strict and warnings
 
+use constant _MOUSE_DEBUG => !!$ENV{MOUSE_DEBUG};
+
 sub _generate_destructor{
     my (undef, $metaclass) = @_;
 
     my $demolishall = '';
     for my $class ($metaclass->linearized_isa) {
         if (Mouse::Util::get_code_ref($class, 'DEMOLISH')) {
-            $demolishall .= sprintf "%s::DEMOLISH(\$self, \$Mouse::Util::in_global_destruction);\n",
-                $class,
+            $demolishall .= '                ' . $class
+                . '::DEMOLISH($self, $Mouse::Util::in_global_destruction);'
+                . "\n",
         }
     }
 
-    my $name   = $metaclass->name;
-    my $source = sprintf(<<'EOT', __LINE__, __FILE__, $name, $demolishall);
-#line %d %s
-    package %s;
-    sub {
-        my $self = shift;
-        return $self->Mouse::Object::DESTROY()
-            if ref($self) ne __PACKAGE__;
+    if($demolishall) {
+        $demolishall = sprintf <<'EOT', $demolishall;
         my $e = do{
             local $?;
             local $@;
             eval{
-                # demolishall
                 %s;
             };
             $@;
         };
         no warnings 'misc';
         die $e if $e; # rethrow
+EOT
+    }
+
+    my $name   = $metaclass->name;
+    my $source = sprintf(<<'EOT', __FILE__, $name, $demolishall);
+#line 1 "%s"
+    package %s;
+    sub {
+        my($self) = @_;
+        return $self->Mouse::Object::DESTROY()
+            if ref($self) ne __PACKAGE__;
+        # DEMOLISHALL
+        %s;
+        return;
     }
 EOT
 
+    warn $source if _MOUSE_DEBUG;
+
     my $code;
     my $e = do{
         local $@;
@@ -53,7 +65,7 @@ Mouse::Meta::Method::Destructor - A Mouse method generator for destructors
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 SEE ALSO
 
index d711877..d7439d8 100644 (file)
@@ -319,7 +319,7 @@ Mouse::Meta::Module - The common base class of Mouse::Meta::Class and Mouse::Met
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 DESCRIPTION
 
index 2572ebe..b2e8155 100644 (file)
@@ -131,7 +131,7 @@ Mouse::Meta::Role - The Mouse Role metaclass
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 DESCRIPTION
 
index 66b95d1..9b8d7f0 100644 (file)
@@ -206,7 +206,7 @@ Mouse::Meta::Role::Application - The Mouse role application class
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 SEE ALSO
 
index 8b4625d..7f7ff56 100644 (file)
@@ -156,7 +156,7 @@ Mouse::Meta::Role::Composite - An object to represent the set of roles
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 SEE ALSO
 
index 3ac237c..0e52438 100644 (file)
@@ -23,7 +23,7 @@ Mouse::Meta::Role::Method - A Mouse Method metaclass for Roles
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 SEE ALSO
 
index 6813d32..2dcba43 100644 (file)
@@ -234,7 +234,7 @@ Mouse::Meta::TypeConstraint - The Mouse Type Constraint metaclass
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 DESCRIPTION
 
index 5a4b3d1..82b5a20 100644 (file)
@@ -17,7 +17,7 @@ Mouse::Object - The base object for Mouse classes
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 METHODS
 
index 056d3d9..5f2527f 100644 (file)
@@ -745,7 +745,7 @@ Mouse::PurePerl - A Mouse guts in pure Perl
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 SEE ALSO
 
index e7b74ec..ea8c750 100644 (file)
@@ -1,7 +1,7 @@
 package Mouse::Role;
 use Mouse::Exporter; # enables strict and warnings
 
-our $VERSION = '0.73';
+our $VERSION = '0.74';
 
 use Carp         qw(confess);
 use Scalar::Util qw(blessed);
@@ -137,7 +137,7 @@ Mouse::Role - The Mouse Role
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 SYNOPSIS
 
index 33de26a..2def9fa 100644 (file)
@@ -2,7 +2,7 @@ package Mouse::Spec;
 use strict;
 use warnings;
 
-our $VERSION = '0.73';
+our $VERSION = '0.74';
 
 our $MouseVersion = $VERSION;
 our $MooseVersion = '1.10';
@@ -19,7 +19,7 @@ Mouse::Spec - To what extent Mouse is compatible with Moose
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 SYNOPSIS
 
index ee0b84a..7ffad82 100644 (file)
@@ -5,7 +5,7 @@ Mouse::Tiny - Mouse in a single file
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 DESCRIPTION
 
index bd64d15..656f642 100644 (file)
@@ -48,7 +48,7 @@ BEGIN{
         },
     );
 
-    our $VERSION = '0.73';
+    our $VERSION = '0.74';
 
     my $xs = !(defined(&is_valid_class_name) || $ENV{MOUSE_PUREPERL} || $ENV{PERL_ONLY});
 
@@ -388,7 +388,7 @@ Mouse::Util - Utilities for working with Mouse classes
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 SYNOPSIS
 
index b27d946..050a0c7 100644 (file)
@@ -432,7 +432,7 @@ Mouse::Util::TypeConstraints - Type constraint system for Mouse
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head2 SYNOPSIS
 
index 26e1c52..b581bd4 100644 (file)
@@ -5,7 +5,7 @@ Mouse::XS - A Mouse guts in XS
 
 =head1 VERSION
 
-This document describes Mouse version 0.73
+This document describes Mouse version 0.74
 
 =head1 DESCRIPTION
 
index 65331f0..1fb4c62 100644 (file)
@@ -2,10 +2,14 @@
 use strict;
 use warnings;
 use constant HAS_THREADS => eval{ require threads && require threads::shared };
-
-use if !HAS_THREADS, 'Test::More', (skip_all => "This is a test for threads ($@)");
 use Test::More;
 
+use if !HAS_THREADS, 'Test::More',
+    (skip_all => "This is a test for threads ($@)");
+use if $Test::More::VERSION == 2.00_01, 'Test::More',
+    (skip_all => "Test::Builder2 2.00_01 has bugs about threads");
+
+
 {
     package MyTraits;
     use Mouse::Role;
@@ -55,4 +59,6 @@ is $o->foo->value, 43;
 
 ok !$o->meta->is_immutable;
 
+pass "done";
+
 done_testing;
index 4851e6a..4c2b366 100644 (file)
@@ -35,7 +35,7 @@ BEGIN {
 {
   package Quux;
 
-  use metaclass;
+  #use metaclass;
 }
 
 {
index 935cec4..2a8b19f 100644 (file)
@@ -1,5 +1,8 @@
 package MooseCompat;
 # Moose compatible methods/functions
+
+use Test::Builder (); # should load Test::Builder first
+
 use Mouse ();
 use Mouse::Util::MetaRole;
 use Mouse::Meta::Method;