From 79f48b2a07ce0bc9291d4c23c5bf86d22c2cf015 Mon Sep 17 00:00:00 2001 From: Felipe Gasper Date: Sun, 21 Feb 2021 05:56:42 -0500 Subject: [PATCH] remove Loader.pm, which should fix CPAN.pm installation --- lib/Promise/XS.pm | 37 +++++++++++++++++++++++++++++++- lib/Promise/XS/Loader.pm | 46 ---------------------------------------- 2 files changed, 36 insertions(+), 47 deletions(-) delete mode 100644 lib/Promise/XS/Loader.pm diff --git a/lib/Promise/XS.pm b/lib/Promise/XS.pm index ca739a0..49319d2 100644 --- a/lib/Promise/XS.pm +++ b/lib/Promise/XS.pm @@ -240,7 +240,6 @@ Windows. There may be a workaround possible, but none is implemented for now. use Exporter 'import'; our @EXPORT_OK= qw/all collect deferred resolved rejected/; -use Promise::XS::Loader (); use Promise::XS::Deferred (); use Promise::XS::Promise (); @@ -255,6 +254,9 @@ use constant DEFERRAL_CR => { # convenience *deferred = *Promise::XS::Deferred::create; +require XSLoader; +XSLoader::load('Promise::XS', $VERSION); + sub use_event { my ($name, @args) = @_; @@ -266,6 +268,39 @@ sub use_event { } } +sub _convert_to_our_promise { + my $thenable = shift; + my $deferred= Promise::XS::Deferred::create(); + my $called; + + local $@; + eval { + $thenable->then(sub { + return if $called++; + $deferred->resolve(@_); + }, sub { + return if $called++; + $deferred->reject(@_); + }); + 1; + } or do { + my $error= $@; + if (!$called++) { + $deferred->reject($error); + } + }; + + # This promise is purely internal, so let’s not warn + # when its rejection is unhandled. + $deferred->clear_unhandled_rejection(); + + return $deferred->promise; +} + +Promise::XS::Deferred::___set_conversion_helper( + \&_convert_to_our_promise, +); + #---------------------------------------------------------------------- # Aggregator functions sub all { diff --git a/lib/Promise/XS/Loader.pm b/lib/Promise/XS/Loader.pm deleted file mode 100644 index 90afed4..0000000 --- a/lib/Promise/XS/Loader.pm +++ /dev/null @@ -1,46 +0,0 @@ -package Promise::XS::Loader; - -use strict; -use warnings; - -use Promise::XS; -our $VERSION; -*VERSION = \$Promise::XS::VERSION; - -require XSLoader; -XSLoader::load('Promise::XS', $VERSION); - -sub _convert_to_our_promise { - my $thenable = shift; - my $deferred= Promise::XS::Deferred::create(); - my $called; - - local $@; - eval { - $thenable->then(sub { - return if $called++; - $deferred->resolve(@_); - }, sub { - return if $called++; - $deferred->reject(@_); - }); - 1; - } or do { - my $error= $@; - if (!$called++) { - $deferred->reject($error); - } - }; - - # This promise is purely internal, so let’s not warn - # when its rejection is unhandled. - $deferred->clear_unhandled_rejection(); - - return $deferred->promise; -} - -Promise::XS::Deferred::___set_conversion_helper( - \&_convert_to_our_promise, -); - -1;