Assigning non-zero to $[ will become fatal in 5.30
authorDagfinn Ilmari Mannsåker <ilmari@ilmari.org>
Tue, 21 Nov 2017 21:12:12 +0000 (21:12 +0000)
committerDagfinn Ilmari Mannsåker <ilmari@ilmari.org>
Tue, 28 Nov 2017 10:42:48 +0000 (10:42 +0000)
As agreed at the Perl5 Core Hackathon.

ext/arybase/arybase.pm
ext/arybase/arybase.xs
pod/perldelta.pod
pod/perldeprecation.pod
pod/perldiag.pod
t/lib/feature/bundle
t/lib/warnings/op

index 74913f1..5e34e29 100644 (file)
@@ -1,6 +1,6 @@
 package arybase;
 
-our $VERSION = "0.14";
+our $VERSION = "0.15";
 
 require XSLoader;
 XSLoader::load(); # This returns true, which makes require happy.
index bd1d1c7..6c12d05 100644 (file)
@@ -159,6 +159,7 @@ STATIC void ab_process_assignment(pTHX_ OP *left, OP *right) {
   if (base) {
     Perl_ck_warner_d(aTHX_
      packWARN(WARN_DEPRECATED), "Use of assignment to $[ is deprecated"
+                                ", and will be fatal in Perl 5.30"
     );
   }
  }
index de2ba9c..b280c77 100644 (file)
@@ -49,6 +49,12 @@ XXX For a release on a stable branch, this section aspires to be:
 
 XXX Any deprecated features, syntax, modules etc. should be listed here.
 
+=head2 Assignment to C<$[> will be fatal in Perl 5.30
+
+Assigning a non-zero value to L<C<$[>|perlvar/$[> has been deprecated
+since Perl 5.12, but was never given a deadline for removal.  This has
+now been scheduled for Perl 5.30.
+
 =head2 Module removals
 
 XXX Remove this section if not applicable.
index c123f31..eb6e0f9 100644 (file)
@@ -81,6 +81,15 @@ error in Perl 5.30.
 To specify how numbers are formatted when printed, one is adviced
 to use C<< printf >> or C<< sprintf >> instead.
 
+=head3 Assigning non-zero to C<< $[ >> will be fatal
+
+This variable (and the corresponding C<array_base> feature and
+L<arybase> module) allows changing the base for array and string
+indexing operations.
+
+Setting this to a non-zero value has been deprecated since Perl 5.12 and
+will become fatal in Perl 5.30.
+
 =head3 C<< File::Glob::glob() >> will disappear
 
 C<< File::Glob >> has a function called C<< glob >>, which just calls
index 7e6d87e..528fd40 100644 (file)
@@ -6971,10 +6971,12 @@ you can write it as C<push(@tied_array,())> to avoid this warning.
 (F) The "use" keyword is recognized and executed at compile time, and
 returns no useful value.  See L<perlmod>.
 
-=item Use of assignment to $[ is deprecated
+=item Use of assignment to $[ is deprecated, and will be fatal in 5.30
 
 (D deprecated) The C<$[> variable (index of the first element in an array)
-is deprecated.  See L<perlvar/"$[">.
+is deprecated since Perl 5.12, and setting it to a non-zero value will be
+fatal as of Perl 5.30.
+See L<perlvar/"$[">.
 
 =item Use of bare << to mean <<"" is forbidden
 
index b9facc0..5eacaff 100644 (file)
@@ -92,7 +92,7 @@ print qw[a b c][2], "\n";
 use feature ":5.16";
 print qw[a b c][2], "\n";
 EXPECT
-Use of assignment to $[ is deprecated at - line 4.
+Use of assignment to $[ is deprecated, and will be fatal in Perl 5.30 at - line 4.
 b
 b
 c
@@ -104,7 +104,7 @@ no feature; # resets to :default, thus turns array_base on
 $[ = 1;
 print qw[a b c][2], "\n";
 EXPECT
-Use of assignment to $[ is deprecated at - line 4.
+Use of assignment to $[ is deprecated, and will be fatal in Perl 5.30 at - line 4.
 b
 ########
 # "no feature 'all"
@@ -114,7 +114,7 @@ no feature ':all'; # turns array_base (and everything else) off
 $[ = 1;
 print qw[a b c][2], "\n";
 EXPECT
-Use of assignment to $[ is deprecated at - line 2.
+Use of assignment to $[ is deprecated, and will be fatal in Perl 5.30 at - line 2.
 Assigning non-zero to $[ is no longer possible at - line 5.
 b
 ########
index bb68402..ead60ad 100644 (file)
@@ -1732,10 +1732,10 @@ no warnings 'deprecated';
 $[ = 3;
 ($[) = 3;
 EXPECT
-Use of assignment to $[ is deprecated at - line 2.
-Use of assignment to $[ is deprecated at - line 3.
-Use of assignment to $[ is deprecated at - line 5.
-Use of assignment to $[ is deprecated at - line 6.
+Use of assignment to $[ is deprecated, and will be fatal in Perl 5.30 at - line 2.
+Use of assignment to $[ is deprecated, and will be fatal in Perl 5.30 at - line 3.
+Use of assignment to $[ is deprecated, and will be fatal in Perl 5.30 at - line 5.
+Use of assignment to $[ is deprecated, and will be fatal in Perl 5.30 at - line 6.
 ########
 # op.c
 use warnings 'void';