This is an automated email from the git hooks/post-receive script.

gregoa pushed a commit to branch master
in repository libmoo-perl.

commit cc4bf1cc02365158c32b532a32758338010e2a8f
Author: Graham Knop <ha...@haarg.org>
Date:   Thu Dec 8 23:12:57 2016 -0500

    clean up Sub::Defer and Sub::Quote imports
---
 lib/Moo.pm             |  1 -
 lib/Moo/HandleMoose.pm |  1 +
 lib/Moo/Role.pm        | 41 +++++++++++++++++++++++------------------
 lib/Moo/_Utils.pm      |  3 +--
 4 files changed, 25 insertions(+), 21 deletions(-)

diff --git a/lib/Moo.pm b/lib/Moo.pm
index bf93ca0..17b3022 100644
--- a/lib/Moo.pm
+++ b/lib/Moo.pm
@@ -168,7 +168,6 @@ sub _constructor_maker_for {
   return unless $MAKERS{$target};
   $MAKERS{$target}{constructor} ||= do {
     require Method::Generate::Constructor;
-    require Sub::Defer;
 
     my %construct_opts = (
       package => $target,
diff --git a/lib/Moo/HandleMoose.pm b/lib/Moo/HandleMoose.pm
index 2a368fd..5ee98bb 100644
--- a/lib/Moo/HandleMoose.pm
+++ b/lib/Moo/HandleMoose.pm
@@ -59,6 +59,7 @@ sub inject_real_metaclass_for {
   our %DID_INJECT;
   return Class::MOP::get_metaclass_by_name($name) if $DID_INJECT{$name};
   require Moose; require Moo; require Moo::Role; require Scalar::Util;
+  require Sub::Defer;
   Class::MOP::remove_metaclass_by_name($name);
   my ($am_role, $am_class, $meta, $attr_specs, $attr_order) = do {
     if (my $info = $Moo::Role::INFO{$name}) {
diff --git a/lib/Moo/Role.pm b/lib/Moo/Role.pm
index 1a81cf5..20a61c2 100644
--- a/lib/Moo/Role.pm
+++ b/lib/Moo/Role.pm
@@ -11,10 +11,8 @@ use Moo::_Utils qw(
   _set_loaded
   _unimport_coderefs
 );
-use Sub::Defer ();
-use Sub::Quote qw(quote_sub sanitize_identifier);
-use Role::Tiny ();
 use Carp qw(croak);
+use Role::Tiny ();
 BEGIN { our @ISA = qw(Role::Tiny) }
 BEGIN {
   our @CARP_NOT = qw(
@@ -171,6 +169,7 @@ sub _inhale_if_moose {
         my $spec = { %{ $is_mouse ? $attr : $attr->original_options } };
 
         if ($spec->{isa}) {
+          require Sub::Quote;
 
           my $get_constraint = do {
             my $pkg = $is_mouse
@@ -182,9 +181,9 @@ sub _inhale_if_moose {
 
           my $tc = $get_constraint->($spec->{isa});
           my $check = $tc->_compiled_type_constraint;
-          my $tc_var = '$_check_for_'.sanitize_identifier($tc->name);
+          my $tc_var = 
'$_check_for_'.Sub::Quote::sanitize_identifier($tc->name);
 
-          $spec->{isa} = quote_sub
+          $spec->{isa} = Sub::Quote::quote_sub(
             qq{
               &${tc_var} or Carp::croak "Type constraint failed for \$_[0]"
             },
@@ -192,7 +191,7 @@ sub _inhale_if_moose {
             {
               package => $role,
             },
-          ;
+          );
 
           if ($spec->{coerce}) {
 
@@ -261,7 +260,9 @@ sub _make_accessors {
 
 sub _undefer_subs {
   my ($self, $target, $role) = @_;
-  Sub::Defer::undefer_package($role);
+  if ($INC{'Sub/Defer.pm'}) {
+    Sub::Defer::undefer_package($role);
+  }
 }
 
 sub role_application_steps {
@@ -337,13 +338,11 @@ sub apply_roles_to_object {
         and keys %attrs
         and my $con_gen = Moo->_constructor_maker_for($class)
         and my $m = Moo->_accessor_maker_for($class)) {
-      require Sub::Quote;
 
       my $specs = $con_gen->all_attribute_specs;
 
       my %captures;
       my $code = join('',
-        "no warnings 'void';\n",
         ( map {
           my $name = $_;
           my $spec = $specs->{$name};
@@ -362,15 +361,21 @@ sub apply_roles_to_object {
           }
         } sort keys %attrs ),
       );
-      Sub::Quote::quote_sub(
-        "${class}::_apply_defaults",
-        $code,
-        \%captures,
-        {
-          package => $class,
-          no_install => 1,
-        }
-      );
+      if ($code) {
+        require Sub::Quote;
+        Sub::Quote::quote_sub(
+          "${class}::_apply_defaults",
+          "no warnings 'void';\n$code",
+          \%captures,
+          {
+            package => $class,
+            no_install => 1,
+          }
+        );
+      }
+      else {
+        0;
+      }
     }
     else {
       0;
diff --git a/lib/Moo/_Utils.pm b/lib/Moo/_Utils.pm
index a8b839b..9542490 100644
--- a/lib/Moo/_Utils.pm
+++ b/lib/Moo/_Utils.pm
@@ -36,8 +36,7 @@ our @EXPORT = qw(
 sub _install_modifier {
   my ($into, $type, $name, $code) = @_;
 
-  if (my $to_modify = $into->can($name)) { # CMM will throw for us if not
-    require Sub::Defer;
+  if ($INC{'Sub/Defer.pm'} and my $to_modify = $into->can($name)) { # CMM will 
throw for us if not
     Sub::Defer::undefer_sub($to_modify);
   }
 

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-perl/packages/libmoo-perl.git

_______________________________________________
Pkg-perl-cvs-commits mailing list
Pkg-perl-cvs-commits@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits

Reply via email to