Hello community,
here is the log from the commit of package perl-Syntax-Keyword-Try for
openSUSE:Factory checked in at 2020-11-24 22:13:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Syntax-Keyword-Try (Old)
and /work/SRC/openSUSE:Factory/.perl-Syntax-Keyword-Try.new.5913 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Syntax-Keyword-Try"
Tue Nov 24 22:13:22 2020 rev:8 rq:850409 version:0.20
Changes:
--------
---
/work/SRC/openSUSE:Factory/perl-Syntax-Keyword-Try/perl-Syntax-Keyword-Try.changes
2020-08-04 20:19:11.508951229 +0200
+++
/work/SRC/openSUSE:Factory/.perl-Syntax-Keyword-Try.new.5913/perl-Syntax-Keyword-Try.changes
2020-11-24 22:14:00.087580173 +0100
@@ -1,0 +2,19 @@
+Tue Nov 24 03:06:24 UTC 2020 - Tina Müller <[email protected]>
+
+- updated to 0.20
+ see /usr/share/doc/packages/perl-Syntax-Keyword-Try/Changes
+
+ 0.20 2020-11-24
+ [BUGFIXES]
+ * Fix for perl 5.14 by #include'ing hax/ files in the right order
+
+ 0.19 2020-11-24
+ [CHANGES]
+ * Avoid the core Off() and Bit() macros as they were removed after
+ perl 5.33.3
+ * Support :experimental(try_value) to activate and silence the
+ warning
+ * Add documentation about the scalar context propagation issue of
+ RT124229
+
+-------------------------------------------------------------------
Old:
----
Syntax-Keyword-Try-0.18.tar.gz
New:
----
Syntax-Keyword-Try-0.20.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Syntax-Keyword-Try.spec ++++++
--- /var/tmp/diff_new_pack.7hRNfs/_old 2020-11-24 22:14:02.111582049 +0100
+++ /var/tmp/diff_new_pack.7hRNfs/_new 2020-11-24 22:14:02.111582049 +0100
@@ -17,7 +17,7 @@
Name: perl-Syntax-Keyword-Try
-Version: 0.18
+Version: 0.20
Release: 0
%define cpan_name Syntax-Keyword-Try
Summary: C<try/catch/finally> syntax for perl
++++++ Syntax-Keyword-Try-0.18.tar.gz -> Syntax-Keyword-Try-0.20.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Syntax-Keyword-Try-0.18/Changes
new/Syntax-Keyword-Try-0.20/Changes
--- old/Syntax-Keyword-Try-0.18/Changes 2020-08-01 18:18:13.000000000 +0200
+++ new/Syntax-Keyword-Try-0.20/Changes 2020-11-24 02:13:24.000000000 +0100
@@ -1,5 +1,18 @@
Revision history for Syntax-Keyword-Try
+0.20 2020-11-24
+ [BUGFIXES]
+ * Fix for perl 5.14 by #include'ing hax/ files in the right order
+
+0.19 2020-11-24
+ [CHANGES]
+ * Avoid the core Off() and Bit() macros as they were removed after
+ perl 5.33.3
+ * Support :experimental(try_value) to activate and silence the
+ warning
+ * Add documentation about the scalar context propagation issue of
+ RT124229
+
0.18 2020-08-01
[CHANGES]
* De-experiment the `catch ($var)` syntax
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Syntax-Keyword-Try-0.18/MANIFEST
new/Syntax-Keyword-Try-0.20/MANIFEST
--- old/Syntax-Keyword-Try-0.18/MANIFEST 2020-08-01 18:18:13.000000000
+0200
+++ new/Syntax-Keyword-Try-0.20/MANIFEST 2020-11-24 02:13:24.000000000
+0100
@@ -2,6 +2,7 @@
Changes
hax/lexer-additions.c.inc
hax/perl-additions.c.inc
+hax/perl-backcompat.c.inc
hax/wrap_keyword_plugin.c.inc
lib/Syntax/Keyword/Try.pm
lib/Syntax/Keyword/Try.xs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Syntax-Keyword-Try-0.18/META.json
new/Syntax-Keyword-Try-0.20/META.json
--- old/Syntax-Keyword-Try-0.18/META.json 2020-08-01 18:18:13.000000000
+0200
+++ new/Syntax-Keyword-Try-0.20/META.json 2020-11-24 02:13:24.000000000
+0100
@@ -38,7 +38,7 @@
"provides" : {
"Syntax::Keyword::Try" : {
"file" : "lib/Syntax/Keyword/Try.pm",
- "version" : "0.18"
+ "version" : "0.20"
}
},
"release_status" : "stable",
@@ -48,6 +48,6 @@
],
"x_IRC" : "irc://irc.perl.org/#io-async"
},
- "version" : "0.18",
+ "version" : "0.20",
"x_serialization_backend" : "JSON::PP version 4.05"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Syntax-Keyword-Try-0.18/META.yml
new/Syntax-Keyword-Try-0.20/META.yml
--- old/Syntax-Keyword-Try-0.18/META.yml 2020-08-01 18:18:13.000000000
+0200
+++ new/Syntax-Keyword-Try-0.20/META.yml 2020-11-24 02:13:24.000000000
+0100
@@ -17,11 +17,11 @@
provides:
Syntax::Keyword::Try:
file: lib/Syntax/Keyword/Try.pm
- version: '0.18'
+ version: '0.20'
requires:
perl: '5.014'
resources:
IRC: irc://irc.perl.org/#io-async
license: http://dev.perl.org/licenses/
-version: '0.18'
+version: '0.20'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Syntax-Keyword-Try-0.18/README
new/Syntax-Keyword-Try-0.20/README
--- old/Syntax-Keyword-Try-0.18/README 2020-08-01 18:18:13.000000000 +0200
+++ new/Syntax-Keyword-Try-0.20/README 2020-11-24 02:13:24.000000000 +0100
@@ -43,6 +43,8 @@
use Syntax::Keyword::Try qw( try :experimental(typed) );
+ use Syntax::Keyword::Try qw( try :experimental(try_value) );
+
use Syntax::Keyword::Try qw( try :experimental ); # all of the above
Don't forget to import the main try symbol itself, to activate the
@@ -357,7 +359,29 @@
}
}
-KNOWN BUGS
+ISSUES
+
+ Context propagation during return
+
+ A return statement inside a try block will currently always propagate a
+ scalar context, even if the function it appears in itself is in list
+ context.
+
+ sub inner
+ {
+ return wantarray ? (qw( a list of things )) : "a single scalar";
+ }
+
+ sub outer
+ {
+ try { return inner() }
+ catch {}
+ }
+
+ my @result = outer();
+ print for @result; # prints "a single scalar"
+
+ This is discussed at https://rt.cpan.org/Ticket/Display.html?id=124229.
Thread-safety at load time cannot be assured before perl 5.16
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Syntax-Keyword-Try-0.18/hax/perl-additions.c.inc
new/Syntax-Keyword-Try-0.20/hax/perl-additions.c.inc
--- old/Syntax-Keyword-Try-0.18/hax/perl-additions.c.inc 2020-08-01
18:18:13.000000000 +0200
+++ new/Syntax-Keyword-Try-0.20/hax/perl-additions.c.inc 2020-11-24
02:13:24.000000000 +0100
@@ -1,7 +1,7 @@
/* vi: set ft=c inde=: */
#ifndef av_count
-# define av_count(av) (av_top_index(av) + 1)
+# define av_count(av) (AvFILL(av) + 1)
#endif
#if HAVE_PERL_VERSION(5, 22, 0)
@@ -10,6 +10,17 @@
# define PadnameIsNULL(pn) (!(pn) || (pn) == &PL_sv_undef)
#endif
+#ifndef hv_deletes
+# define hv_deletes(hv, skey, flags) hv_delete((hv), ("" skey ""),
(sizeof(skey) - 1), flags)
+#endif
+
+#if HAVE_PERL_VERSION(5, 22, 0)
+# define PadnameOUTER_off(pn) (PadnameFLAGS(pn) &= ~PADNAMEt_OUTER)
+#else
+ /* PadnameOUTER is really the SvFAKE flag */
+# define PadnameOUTER_off(pn) SvFAKE_off(pn)
+#endif
+
#define save_strndup(s, l) S_save_strndup(aTHX_ s, l)
static char *S_save_strndup(pTHX_ char *s, STRLEN l)
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Syntax-Keyword-Try-0.18/hax/perl-backcompat.c.inc
new/Syntax-Keyword-Try-0.20/hax/perl-backcompat.c.inc
--- old/Syntax-Keyword-Try-0.18/hax/perl-backcompat.c.inc 1970-01-01
01:00:00.000000000 +0100
+++ new/Syntax-Keyword-Try-0.20/hax/perl-backcompat.c.inc 2020-11-24
02:13:24.000000000 +0100
@@ -0,0 +1,81 @@
+/* vi: set ft=c inde=: */
+
+#if !HAVE_PERL_VERSION(5, 18, 0)
+typedef AV PADNAMELIST;
+# define PadlistARRAY(pl) ((PAD **)AvARRAY(pl))
+# define PadlistNAMES(pl) (*PadlistARRAY(pl))
+
+typedef SV PADNAME;
+# define PadnamePV(pn) (SvPOKp(pn) ? SvPVX(pn) : NULL)
+# define PadnameLEN(pn) SvCUR(pn)
+# define PadnameOUTER(pn) (SvFAKE(pn) && !SvPAD_STATE(pn))
+# define PadnamelistARRAY(pnl) AvARRAY(pnl)
+# define PadnamelistMAX(pnl) AvFILLp(pnl)
+
+# define PadARRAY(p) AvARRAY(p)
+#endif
+
+#ifndef av_top_index
+# define av_top_index(av) AvFILL(av)
+#endif
+
+#ifndef block_end
+# define block_end(a,b) Perl_block_end(aTHX_ a,b)
+#endif
+
+#ifndef block_start
+# define block_start(a) Perl_block_start(aTHX_ a)
+#endif
+
+#ifndef cv_clone
+# define cv_clone(a) Perl_cv_clone(aTHX_ a)
+#endif
+
+#ifndef intro_my
+# define intro_my() Perl_intro_my(aTHX)
+#endif
+
+#ifndef OpSIBLING
+# define OpSIBLING(op) (op->op_sibling)
+#endif
+
+#ifndef OpMORESIB_set
+# define OpMORESIB_set(op,sib) ((op)->op_sibling = (sib))
+#endif
+
+#ifndef op_convert_list
+# define op_convert_list(type, flags, o) S_op_convert_list(aTHX_ type,
flags, o)
+static OP *S_op_convert_list(pTHX_ I32 type, I32 flags, OP *o)
+{
+ /* A minimal recreation just for our purposes */
+ o->op_type = type;
+ o->op_flags |= flags;
+ o->op_ppaddr = PL_ppaddr[type];
+
+ o = PL_check[type](aTHX_ o);
+
+ return o;
+}
+#endif
+
+#ifndef PARENT_PAD_INDEX_set
+# if HAVE_PERL_VERSION(5, 22, 0)
+# define PARENT_PAD_INDEX_set(pn,val) (PARENT_PAD_INDEX(pn) = val)
+# else
+ /* stolen from perl-5.20.0's pad.c */
+# define PARENT_PAD_INDEX_set(sv,val) \
+ STMT_START { ((XPVNV*)SvANY(sv))->xnv_u.xpad_cop_seq.xlow = (val); }
STMT_END
+# endif
+#endif
+
+/* On Perl 5.14 this had a different name */
+#ifndef pad_add_name_pvn
+#define pad_add_name_pvn(name, len, flags, typestash, ourstash)
MY_pad_add_name(aTHX_ name, len, flags, typestash, ourstash)
+PADOFFSET MY_pad_add_name(pTHX_ const char *name, STRLEN len, U32 flags, HV
*typestash, HV *ourstash)
+{
+ /* perl 5.14's Perl_pad_add_name requires a NUL-terminated name */
+ SV *namesv = sv_2mortal(newSVpvn(name, len));
+
+ return Perl_pad_add_name(aTHX_ SvPV_nolen(namesv), SvCUR(namesv), flags,
typestash, ourstash);
+}
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Syntax-Keyword-Try-0.18/lib/Syntax/Keyword/Try.pm
new/Syntax-Keyword-Try-0.20/lib/Syntax/Keyword/Try.pm
--- old/Syntax-Keyword-Try-0.18/lib/Syntax/Keyword/Try.pm 2020-08-01
18:18:13.000000000 +0200
+++ new/Syntax-Keyword-Try-0.20/lib/Syntax/Keyword/Try.pm 2020-11-24
02:13:24.000000000 +0100
@@ -3,7 +3,7 @@
#
# (C) Paul Evans, 2016-2019 -- [email protected]
-package Syntax::Keyword::Try 0.18;
+package Syntax::Keyword::Try 0.20;
use v5.14;
use warnings;
@@ -56,6 +56,8 @@
use Syntax::Keyword::Try qw( try :experimental(typed) );
+ use Syntax::Keyword::Try qw( try :experimental(try_value) );
+
use Syntax::Keyword::Try qw( try :experimental ); # all of the above
Don't forget to import the main C<try> symbol itself, to activate the syntax.
@@ -375,7 +377,7 @@
$class->import_into( $caller, @_ );
}
-my @EXPERIMENTAL = qw( typed );
+my @EXPERIMENTAL = qw( typed try_value );
sub import_into
{
@@ -404,6 +406,8 @@
# Ignore requests for these, as they come automatically with `try`
delete @syms{qw( catch finally )};
+ $^H{"Syntax::Keyword::Try/try_value"}++ if
$^H{"Syntax::Keyword::Try/experimental(try_value)"};
+
croak "Unrecognised import symbols @{[ keys %syms ]}" if keys %syms;
}
@@ -430,7 +434,29 @@
}
}
-=head1 KNOWN BUGS
+=head1 ISSUES
+
+=head2 Context propagation during C<return>
+
+A C<return> statement inside a C<try> block will currently always propagate
+a scalar context, even if the function it appears in itself is in list
+context.
+
+ sub inner
+ {
+ return wantarray ? (qw( a list of things )) : "a single scalar";
+ }
+
+ sub outer
+ {
+ try { return inner() }
+ catch {}
+ }
+
+ my @result = outer();
+ print for @result; # prints "a single scalar"
+
+This is discussed at L<https://rt.cpan.org/Ticket/Display.html?id=124229>.
=head2 Thread-safety at load time cannot be assured before perl 5.16
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Syntax-Keyword-Try-0.18/lib/Syntax/Keyword/Try.xs
new/Syntax-Keyword-Try-0.20/lib/Syntax/Keyword/Try.xs
--- old/Syntax-Keyword-Try-0.18/lib/Syntax/Keyword/Try.xs 2020-08-01
18:18:13.000000000 +0200
+++ new/Syntax-Keyword-Try-0.20/lib/Syntax/Keyword/Try.xs 2020-11-24
02:13:24.000000000 +0100
@@ -7,32 +7,6 @@
#include "perl.h"
#include "XSUB.h"
-/* Before perl 5.22 these were not visible */
-
-#ifndef cv_clone
-#define cv_clone(a) Perl_cv_clone(aTHX_ a)
-#endif
-
-#ifndef block_end
-#define block_end(a,b) Perl_block_end(aTHX_ a,b)
-#endif
-
-#ifndef block_start
-#define block_start(a) Perl_block_start(aTHX_ a)
-#endif
-
-#ifndef intro_my
-#define intro_my() Perl_intro_my(aTHX)
-#endif
-
-#ifndef OpSIBLING
-#define OpSIBLING(op) (op->op_sibling)
-#endif
-
-#ifndef OpMORESIB_set
-#define OpMORESIB_set(op,sib) ((op)->op_sibling = (sib))
-#endif
-
#define HAVE_PERL_VERSION(R, V, S) \
(PERL_REVISION > (R) || (PERL_REVISION == (R) && (PERL_VERSION > (V) ||
(PERL_VERSION == (V) && (PERL_SUBVERSION >= (S))))))
@@ -54,17 +28,7 @@
# include "wrap_keyword_plugin.c.inc"
#endif
-/* On Perl 5.14 this had a different name */
-#ifndef pad_add_name_pvn
-#define pad_add_name_pvn(name, len, flags, typestash, ourstash)
MY_pad_add_name(aTHX_ name, len, flags, typestash, ourstash)
-PADOFFSET MY_pad_add_name(pTHX_ const char *name, STRLEN len, U32 flags, HV
*typestash, HV *ourstash)
-{
- /* perl 5.14's Perl_pad_add_name requires a NUL-terminated name */
- SV *namesv = sv_2mortal(newSVpvn(name, len));
-
- return Perl_pad_add_name(aTHX_ SvPV_nolen(namesv), SvCUR(namesv), flags,
typestash, ourstash);
-}
-#endif
+#include "perl-backcompat.c.inc"
#include "lexer-additions.c.inc"
@@ -249,7 +213,7 @@
((COP *)op)->cop_warnings = warnings;
warning_bits = (char *)(warnings + 1);
- warning_bits[Off(2*WARN_EXITING)] &= ~Bit(2*WARN_EXITING);
+ warning_bits[(2*WARN_EXITING) / 8] &= ~(1 << (2*WARN_EXITING % 8));
return op;
}
@@ -467,8 +431,10 @@
is_value = TRUE;
#ifdef WARN_EXPERIMENTAL
- Perl_ck_warner(aTHX_ packWARN(WARN_EXPERIMENTAL),
- "'try do' syntax is experimental and may be changed or removed without
notice");
+ if(!hints || !hv_fetchs(hints,
"Syntax::Keyword::Try/experimental(try_value)", 0)) {
+ Perl_ck_warner(aTHX_ packWARN(WARN_EXPERIMENTAL),
+ "'try do' syntax is experimental and may be changed or removed without
notice");
+ }
#endif
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Syntax-Keyword-Try-0.18/t/20try-do.t
new/Syntax-Keyword-Try-0.20/t/20try-do.t
--- old/Syntax-Keyword-Try-0.18/t/20try-do.t 2020-08-01 18:18:13.000000000
+0200
+++ new/Syntax-Keyword-Try-0.20/t/20try-do.t 2020-11-24 02:13:24.000000000
+0100
@@ -71,6 +71,13 @@
like( $warnings, qr/^'try do' syntax is experimental/,
'try do syntax produces experimental warnings' );
+
+ # warning can be disabled
+ use Syntax::Keyword::Try qw( :experimental(try_value) );
+ $warnings = "";
+
+ eval "try do { 3 } catch { 4 }" or die $@;
+ is( $warnings, "", 'no warnings when :experimental(try_value) is enabled' );
}
done_testing;
_______________________________________________
openSUSE Commits mailing list -- [email protected]
To unsubscribe, email [email protected]
List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette
List Archives:
https://lists.opensuse.org/archives/list/[email protected]