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