Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package perl-PPIx-QuoteLike for
openSUSE:Factory checked in at 2022-04-14 17:25:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-PPIx-QuoteLike (Old)
and /work/SRC/openSUSE:Factory/.perl-PPIx-QuoteLike.new.1941 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-PPIx-QuoteLike"
Thu Apr 14 17:25:16 2022 rev:16 rq:969981 version:0.021
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-PPIx-QuoteLike/perl-PPIx-QuoteLike.changes
2022-03-26 22:31:06.049956498 +0100
+++
/work/SRC/openSUSE:Factory/.perl-PPIx-QuoteLike.new.1941/perl-PPIx-QuoteLike.changes
2022-04-14 17:25:49.215288270 +0200
@@ -1,0 +2,17 @@
+Wed Apr 6 03:13:00 UTC 2022 - Tina M??ller <[email protected]>
+
+- updated to 0.021
+ see /usr/share/doc/packages/perl-PPIx-QuoteLike/Changes
+
+ 0.021 2022-04-03 T. R. Wyant
+ Recognize postfix deref in '@{[ ... ]}' for determining minimum Perl
+ version. This recognizes all forms of postfix dereference,
+ including ->%*, ->&*, and ->**. NOTE that for now this remains a
+ PPIx::QuoteLike::Token::Interpolation.
+ Require PPI 1.238 for postfix deref support, and prune code that
+ dealt with PPI's old behavior.
+ Postfix %*, &*, and ** do not interpolate.
+ Correct perl_version_introduced() for interpolated postfix scalar
+ deref.
+
+-------------------------------------------------------------------
Old:
----
PPIx-QuoteLike-0.020.tar.gz
New:
----
PPIx-QuoteLike-0.021.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-PPIx-QuoteLike.spec ++++++
--- /var/tmp/diff_new_pack.S4gqit/_old 2022-04-14 17:25:49.967289148 +0200
+++ /var/tmp/diff_new_pack.S4gqit/_new 2022-04-14 17:25:49.971289153 +0200
@@ -18,7 +18,7 @@
%define cpan_name PPIx-QuoteLike
Name: perl-PPIx-QuoteLike
-Version: 0.020
+Version: 0.021
Release: 0
License: Artistic-1.0 OR GPL-1.0-or-later
Summary: Parse Perl string literals and string-literal-like things
@@ -29,12 +29,12 @@
BuildRequires: perl
BuildRequires: perl-macros
BuildRequires: perl(Module::Build)
-BuildRequires: perl(PPI::Document) >= 1.117
-BuildRequires: perl(PPI::Dumper) >= 1.117
+BuildRequires: perl(PPI::Document) >= 1.238
+BuildRequires: perl(PPI::Dumper) >= 1.238
BuildRequires: perl(Readonly)
BuildRequires: perl(Test::More) >= 0.88
-Requires: perl(PPI::Document) >= 1.117
-Requires: perl(PPI::Dumper) >= 1.117
+Requires: perl(PPI::Document) >= 1.238
+Requires: perl(PPI::Dumper) >= 1.238
Requires: perl(Readonly)
%{perl_requires}
++++++ PPIx-QuoteLike-0.020.tar.gz -> PPIx-QuoteLike-0.021.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PPIx-QuoteLike-0.020/Changes
new/PPIx-QuoteLike-0.021/Changes
--- old/PPIx-QuoteLike-0.020/Changes 2022-03-17 16:32:01.000000000 +0100
+++ new/PPIx-QuoteLike-0.021/Changes 2022-04-03 15:26:06.000000000 +0200
@@ -1,3 +1,17 @@
+0.021 2022-04-03 T. R. Wyant
+ Recognize postfix deref in '@{[ ... ]}' for determining minimum Perl
+ version. This recognizes all forms of postfix dereference,
+ including ->%*, ->&*, and ->**. NOTE that for now this remains a
+ PPIx::QuoteLike::Token::Interpolation.
+
+ Require PPI 1.238 for postfix deref support, and prune code that
+ dealt with PPI's old behavior.
+
+ Postfix %*, &*, and ** do not interpolate.
+
+ Correct perl_version_introduced() for interpolated postfix scalar
+ deref.
+
0.020 2022-03-17 T. R. Wyant
Correct and optimize the computation of logical column position (the
one that takes account of tabs).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PPIx-QuoteLike-0.020/META.json
new/PPIx-QuoteLike-0.021/META.json
--- old/PPIx-QuoteLike-0.020/META.json 2022-03-17 16:32:01.000000000 +0100
+++ new/PPIx-QuoteLike-0.021/META.json 2022-04-03 15:26:06.000000000 +0200
@@ -41,8 +41,8 @@
"Encode" : "0",
"Exporter" : "0",
"List::Util" : "0",
- "PPI::Document" : "1.117",
- "PPI::Dumper" : "1.117",
+ "PPI::Document" : "1.238",
+ "PPI::Dumper" : "1.238",
"Readonly" : "0",
"Scalar::Util" : "0",
"base" : "0",
@@ -57,51 +57,51 @@
"provides" : {
"PPIx::QuoteLike" : {
"file" : "lib/PPIx/QuoteLike.pm",
- "version" : "0.020"
+ "version" : "0.021"
},
"PPIx::QuoteLike::Constant" : {
"file" : "lib/PPIx/QuoteLike/Constant.pm",
- "version" : "0.020"
+ "version" : "0.021"
},
"PPIx::QuoteLike::Dumper" : {
"file" : "lib/PPIx/QuoteLike/Dumper.pm",
- "version" : "0.020"
+ "version" : "0.021"
},
"PPIx::QuoteLike::Token" : {
"file" : "lib/PPIx/QuoteLike/Token.pm",
- "version" : "0.020"
+ "version" : "0.021"
},
"PPIx::QuoteLike::Token::Control" : {
"file" : "lib/PPIx/QuoteLike/Token/Control.pm",
- "version" : "0.020"
+ "version" : "0.021"
},
"PPIx::QuoteLike::Token::Delimiter" : {
"file" : "lib/PPIx/QuoteLike/Token/Delimiter.pm",
- "version" : "0.020"
+ "version" : "0.021"
},
"PPIx::QuoteLike::Token::Interpolation" : {
"file" : "lib/PPIx/QuoteLike/Token/Interpolation.pm",
- "version" : "0.020"
+ "version" : "0.021"
},
"PPIx::QuoteLike::Token::String" : {
"file" : "lib/PPIx/QuoteLike/Token/String.pm",
- "version" : "0.020"
+ "version" : "0.021"
},
"PPIx::QuoteLike::Token::Structure" : {
"file" : "lib/PPIx/QuoteLike/Token/Structure.pm",
- "version" : "0.020"
+ "version" : "0.021"
},
"PPIx::QuoteLike::Token::Unknown" : {
"file" : "lib/PPIx/QuoteLike/Token/Unknown.pm",
- "version" : "0.020"
+ "version" : "0.021"
},
"PPIx::QuoteLike::Token::Whitespace" : {
"file" : "lib/PPIx/QuoteLike/Token/Whitespace.pm",
- "version" : "0.020"
+ "version" : "0.021"
},
"PPIx::QuoteLike::Utils" : {
"file" : "lib/PPIx/QuoteLike/Utils.pm",
- "version" : "0.020"
+ "version" : "0.021"
}
},
"release_status" : "stable",
@@ -119,6 +119,6 @@
"web" : "https://github.com/trwyant/perl-PPIx-QuoteLike"
}
},
- "version" : "0.020",
+ "version" : "0.021",
"x_serialization_backend" : "JSON::PP version 4.07"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PPIx-QuoteLike-0.020/META.yml
new/PPIx-QuoteLike-0.021/META.yml
--- old/PPIx-QuoteLike-0.020/META.yml 2022-03-17 16:32:01.000000000 +0100
+++ new/PPIx-QuoteLike-0.021/META.yml 2022-04-03 15:26:06.000000000 +0200
@@ -25,47 +25,47 @@
provides:
PPIx::QuoteLike:
file: lib/PPIx/QuoteLike.pm
- version: '0.020'
+ version: '0.021'
PPIx::QuoteLike::Constant:
file: lib/PPIx/QuoteLike/Constant.pm
- version: '0.020'
+ version: '0.021'
PPIx::QuoteLike::Dumper:
file: lib/PPIx/QuoteLike/Dumper.pm
- version: '0.020'
+ version: '0.021'
PPIx::QuoteLike::Token:
file: lib/PPIx/QuoteLike/Token.pm
- version: '0.020'
+ version: '0.021'
PPIx::QuoteLike::Token::Control:
file: lib/PPIx/QuoteLike/Token/Control.pm
- version: '0.020'
+ version: '0.021'
PPIx::QuoteLike::Token::Delimiter:
file: lib/PPIx/QuoteLike/Token/Delimiter.pm
- version: '0.020'
+ version: '0.021'
PPIx::QuoteLike::Token::Interpolation:
file: lib/PPIx/QuoteLike/Token/Interpolation.pm
- version: '0.020'
+ version: '0.021'
PPIx::QuoteLike::Token::String:
file: lib/PPIx/QuoteLike/Token/String.pm
- version: '0.020'
+ version: '0.021'
PPIx::QuoteLike::Token::Structure:
file: lib/PPIx/QuoteLike/Token/Structure.pm
- version: '0.020'
+ version: '0.021'
PPIx::QuoteLike::Token::Unknown:
file: lib/PPIx/QuoteLike/Token/Unknown.pm
- version: '0.020'
+ version: '0.021'
PPIx::QuoteLike::Token::Whitespace:
file: lib/PPIx/QuoteLike/Token/Whitespace.pm
- version: '0.020'
+ version: '0.021'
PPIx::QuoteLike::Utils:
file: lib/PPIx/QuoteLike/Utils.pm
- version: '0.020'
+ version: '0.021'
requires:
Carp: '0'
Encode: '0'
Exporter: '0'
List::Util: '0'
- PPI::Document: '1.117'
- PPI::Dumper: '1.117'
+ PPI::Document: '1.238'
+ PPI::Dumper: '1.238'
Readonly: '0'
Scalar::Util: '0'
base: '0'
@@ -78,5 +78,5 @@
bugtracker: https://rt.cpan.org/Public/Dist/Display.html?Name=PPIx-QuoteLike
license: http://dev.perl.org/licenses/
repository: git://github.com/trwyant/perl-PPIx-QuoteLike.git
-version: '0.020'
+version: '0.021'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PPIx-QuoteLike-0.020/eg/pqldump
new/PPIx-QuoteLike-0.021/eg/pqldump
--- old/PPIx-QuoteLike-0.020/eg/pqldump 2022-03-17 16:32:01.000000000 +0100
+++ new/PPIx-QuoteLike-0.021/eg/pqldump 2022-04-03 15:26:06.000000000 +0200
@@ -9,7 +9,7 @@
use Pod::Usage;
use PPIx::QuoteLike::Dumper;
-our $VERSION = '0.020';
+our $VERSION = '0.021';
my %opt;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PPIx-QuoteLike-0.020/eg/variables
new/PPIx-QuoteLike-0.021/eg/variables
--- old/PPIx-QuoteLike-0.020/eg/variables 2022-03-17 16:32:01.000000000
+0100
+++ new/PPIx-QuoteLike-0.021/eg/variables 2022-04-03 15:26:06.000000000
+0200
@@ -10,7 +10,7 @@
use PPI::Document;
use PPIx::QuoteLike::Utils qw{ __variables };
-our $VERSION = '0.020';
+our $VERSION = '0.021';
my %opt;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PPIx-QuoteLike-0.020/inc/My/Module/Meta.pm
new/PPIx-QuoteLike-0.021/inc/My/Module/Meta.pm
--- old/PPIx-QuoteLike-0.020/inc/My/Module/Meta.pm 2022-03-17
16:32:01.000000000 +0100
+++ new/PPIx-QuoteLike-0.021/inc/My/Module/Meta.pm 2022-04-03
15:26:06.000000000 +0200
@@ -149,8 +149,8 @@
'Encode' => 0,
'Exporter' => 0,
'List::Util' => 0,
- 'PPI::Document' => 1.117,
- 'PPI::Dumper' => 1.117,
+ 'PPI::Document' => 1.238, # for postfix deref
+ 'PPI::Dumper' => 1.238,
'Readonly' => 0,
'Scalar::Util' => 0,
base => 0,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PPIx-QuoteLike-0.020/inc/My/Module/Recommend/Any.pm
new/PPIx-QuoteLike-0.021/inc/My/Module/Recommend/Any.pm
--- old/PPIx-QuoteLike-0.020/inc/My/Module/Recommend/Any.pm 2022-03-17
16:32:01.000000000 +0100
+++ new/PPIx-QuoteLike-0.021/inc/My/Module/Recommend/Any.pm 2022-04-03
15:26:06.000000000 +0200
@@ -12,7 +12,7 @@
BEGIN {
*import = \&Exporter::import;
}
-our $VERSION = '0.020';
+our $VERSION = '0.021';
our @EXPORT_OK = qw{ __any };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Constant.pm
new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Constant.pm
--- old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Constant.pm 2022-03-17
16:32:01.000000000 +0100
+++ new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Constant.pm 2022-04-03
15:26:06.000000000 +0200
@@ -8,7 +8,7 @@
use Carp;
use base qw{ Exporter };
-our $VERSION = '0.020';
+our $VERSION = '0.021';
no warnings qw{ once }; # For older Perls.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Dumper.pm
new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Dumper.pm
--- old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Dumper.pm 2022-03-17
16:32:01.000000000 +0100
+++ new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Dumper.pm 2022-04-03
15:26:06.000000000 +0200
@@ -12,7 +12,7 @@
use PPIx::QuoteLike::Utils qw{ __instance };
use Scalar::Util ();
-our $VERSION = '0.020';
+our $VERSION = '0.021';
use constant SCALAR_REF => ref \0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Token/Control.pm
new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Token/Control.pm
--- old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Token/Control.pm
2022-03-17 16:32:01.000000000 +0100
+++ new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Token/Control.pm
2022-04-03 15:26:06.000000000 +0200
@@ -9,7 +9,7 @@
use PPIx::QuoteLike::Constant qw{ @CARP_NOT };
-our $VERSION = '0.020';
+our $VERSION = '0.021';
{
# TODO make this a state variable when we can require Perl 5.10.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Token/Delimiter.pm
new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Token/Delimiter.pm
--- old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Token/Delimiter.pm
2022-03-17 16:32:01.000000000 +0100
+++ new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Token/Delimiter.pm
2022-04-03 15:26:06.000000000 +0200
@@ -9,7 +9,7 @@
use PPIx::QuoteLike::Constant qw{ MINIMUM_PERL @CARP_NOT };
-our $VERSION = '0.020';
+our $VERSION = '0.021';
# Perl 5.29.0 disallows unassigned code points and combining code points
# as delimiters. Unfortunately for me non-characters and illegal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Token/Interpolation.pm
new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Token/Interpolation.pm
--- old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Token/Interpolation.pm
2022-03-17 16:32:01.000000000 +0100
+++ new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Token/Interpolation.pm
2022-04-03 15:26:06.000000000 +0200
@@ -20,7 +20,7 @@
use base qw{ PPIx::QuoteLike::Token };
-our $VERSION = '0.020';
+our $VERSION = '0.021';
sub ppi {
my ( $self ) = @_;
@@ -76,7 +76,7 @@
sub __perl_version_introduced {
my ( $self ) = @_;
- $self->content() =~ m/ -> (?: \@ [[{*] | % [*] ) /smx
+ $self->{postderef}
and return '5.019005';
return;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Token/String.pm
new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Token/String.pm
--- old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Token/String.pm 2022-03-17
16:32:01.000000000 +0100
+++ new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Token/String.pm 2022-04-03
15:26:06.000000000 +0200
@@ -9,7 +9,7 @@
use PPIx::QuoteLike::Constant qw{ @CARP_NOT };
-our $VERSION = '0.020';
+our $VERSION = '0.021';
1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Token/Structure.pm
new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Token/Structure.pm
--- old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Token/Structure.pm
2022-03-17 16:32:01.000000000 +0100
+++ new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Token/Structure.pm
2022-04-03 15:26:06.000000000 +0200
@@ -9,7 +9,7 @@
use PPIx::QuoteLike::Constant qw{ @CARP_NOT };
-our $VERSION = '0.020';
+our $VERSION = '0.021';
1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Token/Unknown.pm
new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Token/Unknown.pm
--- old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Token/Unknown.pm
2022-03-17 16:32:01.000000000 +0100
+++ new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Token/Unknown.pm
2022-04-03 15:26:06.000000000 +0200
@@ -9,7 +9,7 @@
use PPIx::QuoteLike::Constant qw{ @CARP_NOT };
-our $VERSION = '0.020';
+our $VERSION = '0.021';
1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Token/Whitespace.pm
new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Token/Whitespace.pm
--- old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Token/Whitespace.pm
2022-03-17 16:32:01.000000000 +0100
+++ new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Token/Whitespace.pm
2022-04-03 15:26:06.000000000 +0200
@@ -9,7 +9,7 @@
use PPIx::QuoteLike::Constant qw{ @CARP_NOT };
-our $VERSION = '0.020';
+our $VERSION = '0.021';
sub significant {
return 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Token.pm
new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Token.pm
--- old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Token.pm 2022-03-17
16:32:01.000000000 +0100
+++ new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Token.pm 2022-04-03
15:26:06.000000000 +0200
@@ -16,7 +16,7 @@
visual_column_number
};
-our $VERSION = '0.020';
+our $VERSION = '0.021';
# Private to this package.
sub __new {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Utils.pm
new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Utils.pm
--- old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike/Utils.pm 2022-03-17
16:32:01.000000000 +0100
+++ new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike/Utils.pm 2022-04-03
15:26:06.000000000 +0200
@@ -39,7 +39,7 @@
__variables
};
-our $VERSION = '0.020';
+our $VERSION = '0.021';
# Readonly::Scalar my $BRACED_RE => __match_enclosed( LEFT_CURLY );
Readonly::Scalar my $BRACKETED_RE => __match_enclosed( '[' ); # ]
@@ -89,9 +89,6 @@
return;
}
- # TODO make these state varables once we can require Perl 5.10.
- my $postderef = { map { $_ => 1 } qw{ @* %* } };
-
my $cast_allowed_for_bare_bracketed_variable = {
map { $_ => 1 } qw{ @ $ % } };
@@ -144,17 +141,6 @@
'PPIx::QuoteLike::Token';
foreach my $sym ( _find( $ppi, 'PPI::Token::Symbol' ) ) {
- # The problem we're solving here is that PPI parses postfix
- # dereference as though it makes reference to non-existent
- # punctuation variables '@*' or '%*'. The following
- # statement omits these from output if they are preceded by
- # the '->' operator.
- my $prev;
- $postderef->{ $sym->content() }
- and $prev = $sym->sprevious_sibling()
- and $prev->isa( 'PPI::Token::Operator' )
- and '->' eq $prev->content()
- and next;
# Eliminate rogue subscripts
_is_bareword_subscript( $sym )
and next;
@@ -386,7 +372,7 @@
# Based on Regexp::Common $RE{delimited}{-delim=>'`'}
return ( $REGEXP_CACHE{$ql} ||=
- qr< (?:
+ qr< (
(?: \Q$left\E )
(?: [^\\\Q$left\E]* (?: \\ . [^\\\Q$left\E]* )* )
(?: \Q$left\E )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike.pm
new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike.pm
--- old/PPIx-QuoteLike-0.020/lib/PPIx/QuoteLike.pm 2022-03-17
16:32:01.000000000 +0100
+++ new/PPIx-QuoteLike-0.021/lib/PPIx/QuoteLike.pm 2022-04-03
15:26:06.000000000 +0200
@@ -39,7 +39,7 @@
};
use Scalar::Util ();
-our $VERSION = '0.020';
+our $VERSION = '0.021';
use constant CLASS_CONTROL => 'PPIx::QuoteLike::Token::Control';
use constant CLASS_DELIMITER => 'PPIx::QuoteLike::Token::Delimiter';
@@ -709,8 +709,17 @@
if ( $_[2] =~ m/ \G (?= \{ ) /smxgc ) {
# variable name enclosed in {}
my $delim_re = __match_enclosed( qw< { > );
- $_[2] =~ m/ \G ( $delim_re ) /smxgc
- and return [ CLASS_INTERPOLATION, "$sigil$1" ];
+ if ( $_[2] =~ m/ \G $delim_re /smxgc ) {
+ my $rest = $1;
+ $rest =~ m/ \A \{ \s* \[ ( .* ) \] \s* \} \z /smx
+ or return [ CLASS_INTERPOLATION, "$sigil$rest" ];
+ # At this point we have @{[ ... ]}.
+ my @arg;
+ $self->postderef()
+ and _has_postderef( "$1" )
+ and push @arg, postderef => 1;
+ return [ CLASS_INTERPOLATION, "$sigil$rest", @arg ];
+ }
$_[2] =~ m/ \G ( .* ) /smxgc
and return [ CLASS_UNKNOWN, "$sigil$1",
error => MISMATCHED_DELIM ];
@@ -735,12 +744,15 @@
}
}
+ my @arg;
+
if ( $self->postderef()
and defined( my $deref = _match_postderef( $_[2] ) ) ) {
$interp .= $deref;
+ push @arg, postderef => 1;
}
- return [ CLASS_INTERPOLATION, $interp ];
+ return [ CLASS_INTERPOLATION, $interp, @arg ];
}
my $code;
@@ -784,7 +796,8 @@
# This would all be much easier if I could count on Perl 5.10
sub _match_postderef { ## no critic (RequireArgUnpacking)
my $pos = pos $_[0];
- $_[0] =~ m/ \G ( -> ) ( \$ \# | [\$\@%&*] ) /smxgc
+ # Only scalars and arrays interpolate
+ $_[0] =~ m/ \G ( -> ) ( \$ \# | [\$\@] ) /smxgc
or return;
my $match = "$1$2";
my $sigil = $2;
@@ -805,6 +818,37 @@
}
}
+{
+ no warnings qw{ qw }; ## no critic (ProhibitNoWarnings)
+ my %is_postderef = map { $_ => 1 } qw{ $ $# @ % & * $* $#* @* %* &* ** };
+ sub _has_postderef {
+ my ( $string ) = @_;
+ my $doc = PPI::Document->new( \$string );
+ foreach my $elem ( @{ $doc->find( 'PPI::Token::Symbol' ) || [] } ) {
+ my $next = $elem->snext_sibling()
+ or next;
+ $next->isa( 'PPI::Token::Operator' )
+ or next;
+ $next->content() eq '->'
+ or next;
+ $next = $next->snext_sibling()
+ or next;
+ $next->isa( 'PPI::Token::Cast' )
+ or next;
+ my $content = $next->content();
+ $is_postderef{$content}
+ or next;
+ $content =~ m/ \* \z /smx
+ and return 1;
+ $next = $next->snext_sibling()
+ or next;
+ $next->isa( 'PPI::Structure::Subscript' )
+ and return 1;
+ }
+ return 0;
+ }
+}
+
# For various reasons we may get consecutive literals -- typically
# strings. We want to merge these. The arguments are array refs, with
# the class name of the token in [0] and the content in [1]. I know of
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PPIx-QuoteLike-0.020/t/version.t
new/PPIx-QuoteLike-0.021/t/version.t
--- old/PPIx-QuoteLike-0.020/t/version.t 2022-03-17 16:32:01.000000000
+0100
+++ new/PPIx-QuoteLike-0.021/t/version.t 2022-04-03 15:26:06.000000000
+0200
@@ -96,11 +96,6 @@
'Interpolation was introduced in 5.0';
is $tok->perl_version_removed(), undef, 'Interpolation is still here';
-$tok = PPIx::QuoteLike::Token::Interpolation->__new( content => '$x->@*' );
-is $tok->perl_version_introduced(), '5.019005',
- 'Postfix dereference was introduced in 5.19.5';
-is $tok->perl_version_removed(), undef, 'Postfix dereference is still here';
-
my $obj;
$obj = PPIx::QuoteLike->new( '"foo$bar"' );
@@ -113,6 +108,27 @@
'Case-folded string was introduced in 5.15.8';
is $obj->perl_version_removed(), undef, 'Case-folded string is still here';
+# NOTE Can not use qw{} below because of '$#'.
+foreach my $sigil ( '$', '$#', '@' ) {
+ $obj = PPIx::QuoteLike->new( qq/"\$x->$sigil*"/ );
+ is $obj->perl_version_introduced(), '5.019005',
+ "Postfix dereference $sigil was introduced in 5.19.5";
+ is $tok->perl_version_removed(), undef,
+ "Postfix dereference $sigil is still here";
+}
+
+foreach my $sigil ( qw{ % & * } ) {
+ $obj = PPIx::QuoteLike->new( qq/"\$x->$sigil*"/ );
+ is $obj->perl_version_introduced(), '5.000',
+ "\$->${sigil}* does not interpolate as postfix dereference";
+}
+
+foreach my $sigil ( qw{ % & * } ) {
+ $obj = PPIx::QuoteLike->new( qq/"\@{[\$x->$sigil*]}"/ );
+ is $obj->perl_version_introduced(), '5.019005',
+ "\@{[\$x->$sigil*]} interpolates as postfix dereference";
+}
+
$obj = PPIx::QuoteLike->new( <<HERE_DOC );
<<~'EOD'
How doth the little crocodile