[libtype-tiny-perl] 23/46: use Sub::Util as a fallback for Sub::Name
Jonas Smedegaard
dr at jones.dk
Fri Sep 12 18:48:03 UTC 2014
This is an automated email from the git hooks/post-receive script.
js pushed a commit to tag 1.001_000
in repository libtype-tiny-perl.
commit 16f78d900bc8c0a03d0f872f63f5de8ed76543b0
Author: Toby Inkster <mail at tobyinkster.co.uk>
Date: Sun Aug 31 14:23:54 2014 +0100
use Sub::Util as a fallback for Sub::Name
---
lib/Type/Library.pm | 13 ++++++++-----
lib/Type/Tiny.pm | 18 ++++++++++++------
2 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/lib/Type/Library.pm b/lib/Type/Library.pm
index 12aedbd..27a5ebd 100644
--- a/lib/Type/Library.pm
+++ b/lib/Type/Library.pm
@@ -22,14 +22,17 @@ BEGIN { *NICE_PROTOTYPES = ($] >= 5.014) ? sub () { !!1 } : sub () { !!0 } };
sub _croak ($;@) { require Error::TypeTiny; goto \&Error::TypeTiny::croak }
{
- my $got_subname;
+ my $subname;
my %already; # prevent renaming established functions
sub _subname ($$)
{
- ($got_subname or eval "require Sub::Name")
- and ($got_subname = 1)
- and !$already{refaddr($_[1])}++
- and return(Sub::Name::subname(@_));
+ $subname =
+ eval { require Sub::Name } ? \&Sub::Name::subname :
+ eval { require Sub::Util } ? \&Sub::Util::set_subname :
+ 0
+ if not defined $subname;
+ !$already{refaddr($_[1])}++ and return($subname->(@_))
+ if $subname;
return $_[1];
}
}
diff --git a/lib/Type/Tiny.pm b/lib/Type/Tiny.pm
index 095e966..c55ba52 100644
--- a/lib/Type/Tiny.pm
+++ b/lib/Type/Tiny.pm
@@ -119,6 +119,7 @@ our %ALL_TYPES;
my $QFS;
my $uniq = 1;
+my $subname;
sub new
{
my $class = shift;
@@ -203,14 +204,19 @@ sub new
$self->coercion->add_type_coercions(@$arr);
}
- if ($params{my_methods} and eval { require Sub::Name })
+ if ($params{my_methods})
{
- for my $key (keys %{$params{my_methods}})
+ $subname =
+ eval { require Sub::Name } ? \&Sub::Name::subname :
+ eval { require Sub::Util } ? \&Sub::Util::set_subname :
+ 0
+ if not defined $subname;
+ if ($subname)
{
- Sub::Name::subname(
- sprintf("%s::my_%s", $self->qualified_name, $key),
- $params{my_methods}{$key},
- );
+ $subname->(
+ sprintf("%s::my_%s", $self->qualified_name, $_),
+ $params{my_methods}{$_},
+ ) for keys %{$params{my_methods}};
}
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libtype-tiny-perl.git
More information about the Pkg-perl-cvs-commits
mailing list