Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package perl-XS-Parse-Keyword for openSUSE:Factory checked in at 2023-02-21 15:35:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-XS-Parse-Keyword (Old) and /work/SRC/openSUSE:Factory/.perl-XS-Parse-Keyword.new.22824 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-XS-Parse-Keyword" Tue Feb 21 15:35:44 2023 rev:13 rq:1066843 version:0.33 Changes: -------- --- /work/SRC/openSUSE:Factory/perl-XS-Parse-Keyword/perl-XS-Parse-Keyword.changes 2023-02-01 16:50:40.621593410 +0100 +++ /work/SRC/openSUSE:Factory/.perl-XS-Parse-Keyword.new.22824/perl-XS-Parse-Keyword.changes 2023-02-21 15:35:45.572189587 +0100 @@ -1,0 +2,15 @@ +Sun Feb 19 03:06:55 UTC 2023 - Tina Müller <timueller+p...@suse.de> + +- updated to 0.33 + see /usr/share/doc/packages/perl-XS-Parse-Keyword/Changes + + 0.33 2023-02-18 + [CHANGES] + * Added XPK_LEXVAR, a non `my`-alike variant + * Added XPK_*_pieces() macros allowing caller to dynamically generate + sub-arrays of pieces + + [BUGFIXES] + * Remember to consume whitespace between XPK_REPEATED elements + +------------------------------------------------------------------- Old: ---- XS-Parse-Keyword-0.32.tar.gz New: ---- XS-Parse-Keyword-0.33.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-XS-Parse-Keyword.spec ++++++ --- /var/tmp/diff_new_pack.VmLEJp/_old 2023-02-21 15:35:46.072192460 +0100 +++ /var/tmp/diff_new_pack.VmLEJp/_new 2023-02-21 15:35:46.076192483 +0100 @@ -18,7 +18,7 @@ %define cpan_name XS-Parse-Keyword Name: perl-XS-Parse-Keyword -Version: 0.32 +Version: 0.33 Release: 0 License: Artistic-1.0 OR GPL-1.0-or-later Summary: XS functions to assist in parsing keyword syntax ++++++ XS-Parse-Keyword-0.32.tar.gz -> XS-Parse-Keyword-0.33.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XS-Parse-Keyword-0.32/Changes new/XS-Parse-Keyword-0.33/Changes --- old/XS-Parse-Keyword-0.32/Changes 2023-01-12 19:22:21.000000000 +0100 +++ new/XS-Parse-Keyword-0.33/Changes 2023-02-19 00:02:29.000000000 +0100 @@ -1,5 +1,14 @@ Revision history for XS-Parse-Keyword +0.33 2023-02-18 + [CHANGES] + * Added XPK_LEXVAR, a non `my`-alike variant + * Added XPK_*_pieces() macros allowing caller to dynamically generate + sub-arrays of pieces + + [BUGFIXES] + * Remember to consume whitespace between XPK_REPEATED elements + 0.32 2023-01-12 [BUGFIXES] * Ensure that XPK_TERMEXPR acting as a fullexpr is OK with empty diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XS-Parse-Keyword-0.32/META.json new/XS-Parse-Keyword-0.33/META.json --- old/XS-Parse-Keyword-0.32/META.json 2023-01-12 19:22:21.000000000 +0100 +++ new/XS-Parse-Keyword-0.33/META.json 2023-02-19 00:02:29.000000000 +0100 @@ -40,19 +40,19 @@ "provides" : { "XS::Parse::Infix" : { "file" : "lib/XS/Parse/Infix.pm", - "version" : "0.32" + "version" : "0.33" }, "XS::Parse::Infix::Builder" : { "file" : "lib/XS/Parse/Infix/Builder.pm", - "version" : "0.32" + "version" : "0.33" }, "XS::Parse::Keyword" : { "file" : "lib/XS/Parse/Keyword.pm", - "version" : "0.32" + "version" : "0.33" }, "XS::Parse::Keyword::Builder" : { "file" : "lib/XS/Parse/Keyword/Builder.pm", - "version" : "0.32" + "version" : "0.33" } }, "release_status" : "stable", @@ -61,6 +61,6 @@ "http://dev.perl.org/licenses/" ] }, - "version" : "0.32", + "version" : "0.33", "x_serialization_backend" : "JSON::PP version 4.07" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XS-Parse-Keyword-0.32/META.yml new/XS-Parse-Keyword-0.33/META.yml --- old/XS-Parse-Keyword-0.32/META.yml 2023-01-12 19:22:21.000000000 +0100 +++ new/XS-Parse-Keyword-0.33/META.yml 2023-02-19 00:02:29.000000000 +0100 @@ -19,19 +19,19 @@ provides: XS::Parse::Infix: file: lib/XS/Parse/Infix.pm - version: '0.32' + version: '0.33' XS::Parse::Infix::Builder: file: lib/XS/Parse/Infix/Builder.pm - version: '0.32' + version: '0.33' XS::Parse::Keyword: file: lib/XS/Parse/Keyword.pm - version: '0.32' + version: '0.33' XS::Parse::Keyword::Builder: file: lib/XS/Parse/Keyword/Builder.pm - version: '0.32' + version: '0.33' requires: perl: '5.014' resources: license: http://dev.perl.org/licenses/ -version: '0.32' +version: '0.33' x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XS-Parse-Keyword-0.32/README new/XS-Parse-Keyword-0.33/README --- old/XS-Parse-Keyword-0.32/README 2023-01-12 19:22:21.000000000 +0100 +++ new/XS-Parse-Keyword-0.33/README 2023-02-19 00:02:29.000000000 +0100 @@ -443,6 +443,19 @@ The _OPT-suffixed version is optional; if no version string is found then sv is set to NULL. + XPK_LEXVAR + + atomic, emits padix. + + XPK_LEXVAR(kind) + + A lexical variable name is expected and looked up from the current pad. + The resulting pad index is passed in the padix field. No error happens + if the variable is not found; the value NOT_IN_PAD is passed instead. + + The kind argument specifies what kinds of variable are permitted, as + per XPK_LEXVARNAME. + XPK_LEXVAR_MY atomic, emits padix. @@ -696,6 +709,21 @@ This is a convenient shortcut to nesting the scope within a XPK_OPTIONAL macro. + XPK_..._pieces + + XPK_SEQUENCE_pieces(ptr) + XPK_OPTIONAL_pieces(ptr) + ... + + For each of the XPK_... macros that takes a variable-length list of + pieces, there is a variant whose name ends with ..._pieces, taking a + single pointer argument directly. This must point at a const + XSParseKeywordPieceType [] array whose final element is the zero + element. + + Normally hand-written C code of a fixed grammar would be unlikely to + use these forms, but they may be useful in dynamically-generated cases. + AUTHOR Paul Evans <leon...@leonerd.org.uk> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XS-Parse-Keyword-0.32/XSParseKeyword.h new/XS-Parse-Keyword-0.33/XSParseKeyword.h --- old/XS-Parse-Keyword-0.32/XSParseKeyword.h 2023-01-12 19:22:21.000000000 +0100 +++ new/XS-Parse-Keyword-0.33/XSParseKeyword.h 2023-02-19 00:02:29.000000000 +0100 @@ -133,6 +133,7 @@ #define XPK_LEXVARNAME(kind) {.type = XS_PARSE_KEYWORD_LEXVARNAME, .u.c = kind} +#define XPK_LEXVAR(kind) {.type = XS_PARSE_KEYWORD_LEXVAR, .u.c = kind} #define XPK_LEXVAR_MY(kind) {.type = XS_PARSE_KEYWORD_LEXVAR|XPK_TYPEFLAG_SPECIAL, .u.c = kind} #define XPK_ATTRIBUTES {.type = XS_PARSE_KEYWORD_ATTRS} @@ -155,47 +156,51 @@ #define XPK_INFIX_MATCH_NOSMART XPK_INFIX(XPI_SELECT_MATCH_NOSMART) #define XPK_INFIX_MATCH_SMART XPK_INFIX(XPI_SELECT_MATCH_SMART) -#define XPK_SEQUENCE(...) \ - {.type = XS_PARSE_KEYWORD_SEQUENCE, .u.pieces = (const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} }} +#define XPK_SEQUENCE_pieces(p) {.type = XS_PARSE_KEYWORD_SEQUENCE, .u.pieces = p} +#define XPK_SEQUENCE(...) XPK_SEQUENCE_pieces(((const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} })) + /* First piece of these must be something probe-able */ -#define XPK_OPTIONAL(...) \ - {.type = XS_PARSE_KEYWORD_SEQUENCE|XPK_TYPEFLAG_OPT, .u.pieces = (const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} }} -#define XPK_REPEATED(...) \ - {.type = XS_PARSE_KEYWORD_REPEATED, .u.pieces = (const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} }} +#define XPK_OPTIONAL_pieces(p) {.type = XS_PARSE_KEYWORD_SEQUENCE|XPK_TYPEFLAG_OPT, .u.pieces = p} +#define XPK_OPTIONAL(...) XPK_OPTIONAL_pieces(((const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} })) + +#define XPK_REPEATED_pieces(p) {.type = XS_PARSE_KEYWORD_REPEATED, .u.pieces = p} +#define XPK_REPEATED(...) XPK_REPEATED_pieces(((const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} })) + /* Every piece must be probeable */ -#define XPK_CHOICE(...) \ - {.type = XS_PARSE_KEYWORD_CHOICE, .u.pieces = (const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} }} +#define XPK_CHOICE_pieces(p) {.type = XS_PARSE_KEYWORD_CHOICE, .u.pieces = p} +#define XPK_CHOICE(...) XPK_CHOICE_pieces(((const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} })) + /* Every piece must be probeable, and followed by XPK_TAG */ -#define XPK_TAGGEDCHOICE(...) \ - {.type = XS_PARSE_KEYWORD_TAGGEDCHOICE, .u.pieces = (const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0}, {0} }} -#define XPK_TAG(val) \ - {.type = val} +#define XPK_TAGGEDCHOICE_pieces(p) {.type = XS_PARSE_KEYWORD_TAGGEDCHOICE, .u.pieces = p} +#define XPK_TAGGEDCHOICE(...) XPK_TAGGEDCHOICE_pieces(((const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0}, {0} })) +#define XPK_TAG(val) {.type = val} + #define XPK_COMMALIST(...) \ {.type = XS_PARSE_KEYWORD_SEPARATEDLIST, .u.pieces = (const struct XSParseKeywordPieceType []){ \ {.type = XS_PARSE_KEYWORD_LITERALCHAR, .u.c = ','}, __VA_ARGS__, {0}}} #define XPK_FAILURE(s) {.type = XS_PARSE_KEYWORD_FAILURE, .u.str = (const char *)s} -#define XPK_PARENSCOPE(...) \ - {.type = XS_PARSE_KEYWORD_PARENSCOPE, .u.pieces = (const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} }} +#define XPK_PARENSCOPE_pieces(p) {.type = XS_PARSE_KEYWORD_PARENSCOPE, .u.pieces = p} +#define XPK_PARENSCOPE(...) XPK_PARENSCOPE_pieces(((const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} })) #define XPK_PARENSCOPE_OPT(...) \ {.type = XS_PARSE_KEYWORD_PARENSCOPE|XPK_TYPEFLAG_OPT, .u.pieces = (const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} }} -#define XPK_ARGSCOPE(...) \ - {.type = XS_PARSE_KEYWORD_PARENSCOPE|XPK_TYPEFLAG_MAYBEPARENS, .u.pieces = (const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} }} +#define XPK_ARGSCOPE_pieces(p) {.type = XS_PARSE_KEYWORD_PARENSCOPE|XPK_TYPEFLAG_MAYBEPARENS, .u.pieces = p} +#define XPK_ARGSCOPE(...) XPK_ARGSCOPE_pieces(((const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} })) -#define XPK_BRACKETSCOPE(...) \ - {.type = XS_PARSE_KEYWORD_BRACKETSCOPE, .u.pieces = (const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} }} +#define XPK_BRACKETSCOPE_pieces(p) {.type = XS_PARSE_KEYWORD_BRACKETSCOPE, .u.pieces = p} +#define XPK_BRACKETSCOPE(...) XPK_BRACKETSCOPE_pieces(((const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} })) #define XPK_BRACKETSCOPE_OPT(...) \ {.type = XS_PARSE_KEYWORD_BRACKETSCOPE|XPK_TYPEFLAG_OPT, .u.pieces = (const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} }} -#define XPK_BRACESCOPE(...) \ - {.type = XS_PARSE_KEYWORD_BRACESCOPE, .u.pieces = (const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} }} +#define XPK_BRACESCOPE_pieces(p) {.type = XS_PARSE_KEYWORD_BRACESCOPE, .u.pieces = p} +#define XPK_BRACESCOPE(...) XPK_BRACESCOPE_pieces(((const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} })) #define XPK_BRACESCOPE_OPT(...) \ {.type = XS_PARSE_KEYWORD_BRACESCOPE|XPK_TYPEFLAG_OPT, .u.pieces = (const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} }} -#define XPK_CHEVRONSCOPE(...) \ - {.type = XS_PARSE_KEYWORD_CHEVRONSCOPE, .u.pieces = (const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} }} +#define XPK_CHEVRONSCOPE_pieces(p) {.type = XS_PARSE_KEYWORD_CHEVRONSCOPE, .u.pieces = p} +#define XPK_CHEVRONSCOPE(...) XPK_CHEVRONSCOPE_pieces(((const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} })) #define XPK_CHEVRONSCOPE_OPT(...) \ {.type = XS_PARSE_KEYWORD_CHEVRONSCOPE|XPK_TYPEFLAG_OPT, .u.pieces = (const struct XSParseKeywordPieceType []){ __VA_ARGS__, {0} }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XS-Parse-Keyword-0.32/lib/XS/Parse/Infix/Builder.pm new/XS-Parse-Keyword-0.33/lib/XS/Parse/Infix/Builder.pm --- old/XS-Parse-Keyword-0.32/lib/XS/Parse/Infix/Builder.pm 2023-01-12 19:22:21.000000000 +0100 +++ new/XS-Parse-Keyword-0.33/lib/XS/Parse/Infix/Builder.pm 2023-02-19 00:02:30.000000000 +0100 @@ -3,7 +3,7 @@ # # (C) Paul Evans, 2021 -- leon...@leonerd.org.uk -package XS::Parse::Infix::Builder 0.32; +package XS::Parse::Infix::Builder 0.33; use v5.14; use warnings; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XS-Parse-Keyword-0.32/lib/XS/Parse/Infix/Builder_data.pm.PL new/XS-Parse-Keyword-0.33/lib/XS/Parse/Infix/Builder_data.pm.PL --- old/XS-Parse-Keyword-0.32/lib/XS/Parse/Infix/Builder_data.pm.PL 2023-01-12 19:22:21.000000000 +0100 +++ new/XS-Parse-Keyword-0.33/lib/XS/Parse/Infix/Builder_data.pm.PL 2023-02-19 00:02:30.000000000 +0100 @@ -28,7 +28,7 @@ <$in_h> } ); __DATA__ -package XS::Parse::Infix::Builder_data 0.32; +package XS::Parse::Infix::Builder_data 0.33; use v5.14; use warnings; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XS-Parse-Keyword-0.32/lib/XS/Parse/Infix.pm new/XS-Parse-Keyword-0.33/lib/XS/Parse/Infix.pm --- old/XS-Parse-Keyword-0.32/lib/XS/Parse/Infix.pm 2023-01-12 19:22:21.000000000 +0100 +++ new/XS-Parse-Keyword-0.33/lib/XS/Parse/Infix.pm 2023-02-19 00:02:30.000000000 +0100 @@ -3,7 +3,7 @@ # # (C) Paul Evans, 2021-2022 -- leon...@leonerd.org.uk -package XS::Parse::Infix 0.32; +package XS::Parse::Infix 0.33; use v5.14; use warnings; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XS-Parse-Keyword-0.32/lib/XS/Parse/Keyword/Builder.pm new/XS-Parse-Keyword-0.33/lib/XS/Parse/Keyword/Builder.pm --- old/XS-Parse-Keyword-0.32/lib/XS/Parse/Keyword/Builder.pm 2023-01-12 19:22:21.000000000 +0100 +++ new/XS-Parse-Keyword-0.33/lib/XS/Parse/Keyword/Builder.pm 2023-02-19 00:02:30.000000000 +0100 @@ -3,7 +3,7 @@ # # (C) Paul Evans, 2021 -- leon...@leonerd.org.uk -package XS::Parse::Keyword::Builder 0.32; +package XS::Parse::Keyword::Builder 0.33; use v5.14; use warnings; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XS-Parse-Keyword-0.32/lib/XS/Parse/Keyword/Builder_data.pm.PL new/XS-Parse-Keyword-0.33/lib/XS/Parse/Keyword/Builder_data.pm.PL --- old/XS-Parse-Keyword-0.32/lib/XS/Parse/Keyword/Builder_data.pm.PL 2023-01-12 19:22:21.000000000 +0100 +++ new/XS-Parse-Keyword-0.33/lib/XS/Parse/Keyword/Builder_data.pm.PL 2023-02-19 00:02:30.000000000 +0100 @@ -28,7 +28,7 @@ <$in_h> } ); __DATA__ -package XS::Parse::Keyword::Builder_data 0.32; +package XS::Parse::Keyword::Builder_data 0.33; use v5.14; use warnings; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XS-Parse-Keyword-0.32/lib/XS/Parse/Keyword.pm new/XS-Parse-Keyword-0.33/lib/XS/Parse/Keyword.pm --- old/XS-Parse-Keyword-0.32/lib/XS/Parse/Keyword.pm 2023-01-12 19:22:21.000000000 +0100 +++ new/XS-Parse-Keyword-0.33/lib/XS/Parse/Keyword.pm 2023-02-19 00:02:30.000000000 +0100 @@ -3,7 +3,7 @@ # # (C) Paul Evans, 2021-2022 -- leon...@leonerd.org.uk -package XS::Parse::Keyword 0.32; +package XS::Parse::Keyword 0.33; use v5.14; use warnings; @@ -460,6 +460,19 @@ The C<_OPT>-suffixed version is optional; if no version string is found then I<sv> is set to C<NULL>. +=head2 XPK_LEXVAR + +I<atomic, emits padix.> + + XPK_LEXVAR(kind) + +A lexical variable name is expected and looked up from the current pad. The +resulting pad index is passed in the I<padix> field. No error happens if the +variable is not found; the value C<NOT_IN_PAD> is passed instead. + +The C<kind> argument specifies what kinds of variable are permitted, as per +C<XPK_LEXVARNAME>. + =head2 XPK_LEXVAR_MY I<atomic, emits padix.> @@ -700,6 +713,20 @@ This is a convenient shortcut to nesting the scope within a C<XPK_OPTIONAL> macro. +=head2 XPK_..._pieces + + XPK_SEQUENCE_pieces(ptr) + XPK_OPTIONAL_pieces(ptr) + ... + +For each of the C<XPK_...> macros that takes a variable-length list of pieces, +there is a variant whose name ends with C<..._pieces>, taking a single pointer +argument directly. This must point at a C<const XSParseKeywordPieceType []> +array whose final element is the zero element. + +Normally hand-written C code of a fixed grammar would be unlikely to use these +forms, but they may be useful in dynamically-generated cases. + =cut =head1 AUTHOR diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XS-Parse-Keyword-0.32/src/keyword.c new/XS-Parse-Keyword-0.33/src/keyword.c --- old/XS-Parse-Keyword-0.32/src/keyword.c 2023-01-12 19:22:21.000000000 +0100 +++ new/XS-Parse-Keyword-0.33/src/keyword.c 2023-02-19 00:02:30.000000000 +0100 @@ -609,7 +609,11 @@ if(is_special) THISARG.padix = pad_add_name_pvn(SvPVX(varname), SvCUR(varname), 0, NULL, NULL); else - yycroak("TODO: XS_PARSE_KEYWORD_LEXVAR without LEXVAR_MY"); +#if HAVE_PERL_VERSION(5, 16, 0) + THISARG.padix = pad_findmy_pvn(SvPVX(varname), SvCUR(varname), 0); +#else + THISARG.padix = pad_findmy(SvPVX(varname), SvCUR(varname), 0); +#endif (*argidx)++; return; @@ -689,6 +693,7 @@ (*argidx)++; while(probe_piece(aTHX_ argsv, argidx, piece->u.pieces + 0, hookdata)) { THISARG.i++; + lex_read_space(0); parse_pieces(aTHX_ argsv, argidx, piece->u.pieces + 1, hookdata); } return; @@ -710,6 +715,7 @@ if(!probe_piece(aTHX_ argsv, argidx, piece->u.pieces + 0, hookdata)) break; + lex_read_space(0); } return; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XS-Parse-Keyword-0.32/t/35pieces-lexvar.t new/XS-Parse-Keyword-0.33/t/35pieces-lexvar.t --- old/XS-Parse-Keyword-0.32/t/35pieces-lexvar.t 2023-01-12 19:22:21.000000000 +0100 +++ new/XS-Parse-Keyword-0.33/t/35pieces-lexvar.t 2023-02-19 00:02:30.000000000 +0100 @@ -32,6 +32,9 @@ cmp_ok( $ret, '>', 0, 'result of piecelexvarmy' ); $scalar = 123; + + my $ret2 = piecelexvar $scalar; + is( $ret2, $ret, 'result of piecelexvar matches previous' ); } done_testing; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/XS-Parse-Keyword-0.32/t/pieces.xs new/XS-Parse-Keyword-0.33/t/pieces.xs --- old/XS-Parse-Keyword-0.32/t/pieces.xs 2023-01-12 19:22:21.000000000 +0100 +++ new/XS-Parse-Keyword-0.33/t/pieces.xs 2023-02-19 00:02:30.000000000 +0100 @@ -280,6 +280,13 @@ .build1 = &build_constsv, }; +static const struct XSParseKeywordHooks hooks_lexvar = { + .permit_hintkey = hintkey, + + .piece1 = XPK_LEXVAR(XPK_LEXVAR_ANY), + .build1 = &build_constpadix, +}; + static const struct XSParseKeywordHooks hooks_lexvar_my = { .permit_hintkey = hintkey, @@ -380,6 +387,7 @@ register_xs_parse_keyword("piecepkg", &hooks_packagename, NULL); register_xs_parse_keyword("piecelexvarname", &hooks_lexvar_name, NULL); + register_xs_parse_keyword("piecelexvar", &hooks_lexvar, NULL); register_xs_parse_keyword("piecelexvarmy", &hooks_lexvar_my, NULL); register_xs_parse_keyword("pieceattrs", &hooks_attrs, NULL);