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 <timueller+p...@suse.de> + +- 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 -- leon...@leonerd.org.uk -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 -- commit@lists.opensuse.org To unsubscribe, email commit-le...@lists.opensuse.org List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette List Archives: https://lists.opensuse.org/archives/list/commit@lists.opensuse.org