summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dist/B-Deparse/Deparse.pm6
-rw-r--r--dist/B-Deparse/t/deparse.t5
2 files changed, 9 insertions, 2 deletions
diff --git a/dist/B-Deparse/Deparse.pm b/dist/B-Deparse/Deparse.pm
index bec809ef8f..ba5fd01fda 100644
--- a/dist/B-Deparse/Deparse.pm
+++ b/dist/B-Deparse/Deparse.pm
@@ -4087,8 +4087,12 @@ sub pp_trans {
my $self = shift;
my($op, $cx) = @_;
my($from, $to);
- if (class($op) eq "PVOP") {
+ my $class = class($op);
+ if ($class eq "PVOP") {
($from, $to) = tr_decode_byte($op->pv, $op->private);
+ } elsif ($class eq "PADOP") {
+ ($from, $to)
+ = tr_decode_utf8($self->padval($op->padix)->RV, $op->private);
} else { # class($op) eq "SVOP"
($from, $to) = tr_decode_utf8($op->sv->RV, $op->private);
}
diff --git a/dist/B-Deparse/t/deparse.t b/dist/B-Deparse/t/deparse.t
index b9c2bf4395..570f64efb3 100644
--- a/dist/B-Deparse/t/deparse.t
+++ b/dist/B-Deparse/t/deparse.t
@@ -17,7 +17,7 @@ BEGIN {
require feature;
feature->import(':5.10');
}
-use Test::More tests => 93;
+use Test::More tests => 94;
use Config ();
use B::Deparse;
@@ -675,3 +675,6 @@ foreach $' (1, 2) {
####
# y///r
tr/a/b/r;
+####
+# y/uni/code/
+tr/\x{345}/\x{370}/;