This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Remove arybase support from B::Deparse
authorDagfinn Ilmari Mannsåker <ilmari@ilmari.org>
Mon, 4 Dec 2017 11:27:57 +0000 (11:27 +0000)
committerDagfinn Ilmari Mannsåker <ilmari@ilmari.org>
Wed, 26 Sep 2018 12:00:19 +0000 (13:00 +0100)
lib/B/Deparse.pm

index 23045a8..d7dc060 100644 (file)
@@ -52,7 +52,7 @@ use B qw(class main_root main_start main_cv svref_2object opnumber perlstring
         MDEREF_SHIFT
     );
 
-$VERSION = '1.48';
+$VERSION = '1.49';
 use strict;
 our $AUTOLOAD;
 use warnings ();
@@ -68,7 +68,7 @@ BEGIN {
                OPpPAD_STATE PMf_SKIPWHITE RXf_SKIPWHITE
                PMf_CHARSET PMf_KEEPCOPY PMf_NOCAPTURE CVf_ANONCONST
                CVf_LOCKED OPpREVERSE_INPLACE OPpSUBSTR_REPL_FIRST
-               PMf_NONDESTRUCT OPpCONST_ARYBASE OPpEVAL_BYTES
+               PMf_NONDESTRUCT OPpEVAL_BYTES
                OPpLVREF_TYPE OPpLVREF_SV OPpLVREF_AV OPpLVREF_HV
                OPpLVREF_CV OPpLVREF_ELEM SVpad_STATE)) {
        eval { B->import($_) };
@@ -791,7 +791,6 @@ sub new {
     $self->{'use_dumper'} = 0;
     $self->{'use_tabs'} = 0;
 
-    $self->{'ambient_arybase'} = 0;
     $self->{'ambient_warnings'} = undef; # Assume no lexical warnings
     $self->{'ambient_hints'} = 0;
     $self->{'ambient_hinthash'} = undef;
@@ -837,7 +836,6 @@ sub new {
 sub init {
     my $self = shift;
 
-    $self->{'arybase'}  = $self->{'ambient_arybase'};
     $self->{'warnings'} = defined ($self->{'ambient_warnings'})
                                ? $self->{'ambient_warnings'} & WARN_MASK
                                : undef;
@@ -953,7 +951,7 @@ my %strict_bits = do {
 
 sub ambient_pragmas {
     my $self = shift;
-    my ($arybase, $hint_bits, $warning_bits, $hinthash) = (0, 0);
+    my ($hint_bits, $warning_bits, $hinthash) = (0);
 
     while (@_ > 1) {
        my $name = shift();
@@ -980,14 +978,6 @@ sub ambient_pragmas {
            $hint_bits |= $strict_bits{$_} for @names;
        }
 
-       elsif ($name eq '$[') {
-           if (OPpCONST_ARYBASE) {
-               $arybase = $val;
-           } else {
-               croak "\$[ can't be non-zero on this perl" unless $val == 0;
-           }
-       }
-
        elsif ($name eq 'integer'
            || $name eq 'bytes'
            || $name eq 'utf8') {
@@ -1058,7 +1048,6 @@ sub ambient_pragmas {
        croak "The ambient_pragmas method expects an even number of args";
     }
 
-    $self->{'ambient_arybase'} = $arybase;
     $self->{'ambient_warnings'} = $warning_bits;
     $self->{'ambient_hints'} = $hint_bits;
     $self->{'ambient_hinthash'} = $hinthash;
@@ -2052,11 +2041,6 @@ sub pragmata {
        $self->{'curstash'} = $stash;
     }
 
-    if (OPpCONST_ARYBASE && $self->{'arybase'} != $op->arybase) {
-       push @text, '$[ = '. $op->arybase .";\n";
-       $self->{'arybase'} = $op->arybase;
-    }
-
     my $warnings = $op->warnings;
     my $warning_bits;
     if ($warnings->isa("B::SPECIAL") && $$warnings == 4) {
@@ -4129,7 +4113,7 @@ sub pp_aelemfast_lex {
     $name =~ s/^@/\$/;
     my $i = $op->private;
     $i -= 256 if $i > 127;
-    return $name . "[" .  ($i + $self->{'arybase'}) . "]";
+    return $name . "[$i]";
 }
 
 sub pp_aelemfast {
@@ -4143,7 +4127,7 @@ sub pp_aelemfast {
     $name = $quoted ? "$name->" : '$' . $name;
     my $i = $op->private;
     $i -= 256 if $i > 127;
-    return $name . "[" .  ($i + $self->{'arybase'}) . "]";
+    return $name . "[$i]";
 }
 
 sub rv2x {
@@ -5456,9 +5440,6 @@ sub meth_rclass_sv {
 sub pp_const {
     my $self = shift;
     my($op, $cx) = @_;
-    if ($op->private & OPpCONST_ARYBASE) {
-        return '$[';
-    }
 #    if ($op->private & OPpCONST_BARE) { # trouble with '=>' autoquoting
 #      return $self->const_sv($op)->PV;
 #    }
@@ -5490,7 +5471,6 @@ sub dq {
     my $op = shift;
     my $type = $op->name;
     if ($type eq "const") {
-       return '$[' if $op->private & OPpCONST_ARYBASE;
        return uninterp(escape_str(unback($self->const_sv($op)->as_string)));
     } elsif ($type eq "concat") {
         return dq_disambiguate($self->dq($op->first), $self->dq($op->last));
@@ -5851,7 +5831,6 @@ sub re_dq {
 
     my $type = $op->name;
     if ($type eq "const") {
-       return '$[' if $op->private & OPpCONST_ARYBASE;
        my $unbacked = re_unback($self->const_sv($op)->as_string);
        return re_uninterp(escape_re($unbacked));
     } elsif ($type eq "concat") {