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);

Reply via email to