diff options
author | Father Chrysostomos <sprout@cpan.org> | 2012-07-25 22:07:12 -0700 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2012-07-25 22:20:15 -0700 |
commit | 06b58b76f31d491371d0ab0c38cec33c1c7ba4ab (patch) | |
tree | ab708f3fc62b8ac9cb4ba208b96735eaace0c2e3 /t | |
parent | 42409c4069deb2417b838a49810ecbce306a72b9 (diff) | |
download | perl-06b58b76f31d491371d0ab0c38cec33c1c7ba4ab.tar.gz |
Don’t let ?: folding affect truncate
truncate(${\1} ? foo : bar, 0) and truncate(1 ? foo : bar, 0) should
behave the same way, but were treated differently, due to the way ?:
is folded in the latter case. Now that foldedness is recorded in the
op tree (cc2ebcd7902), we can use the OPpCONST_FOLDED flag to distin-
guish truncate(1 ? foo : bar, 0) from truncate(foo, 0).
Diffstat (limited to 't')
-rw-r--r-- | t/comp/fold.t | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/t/comp/fold.t b/t/comp/fold.t index c600067542..5d6d9bf089 100644 --- a/t/comp/fold.t +++ b/t/comp/fold.t @@ -4,7 +4,7 @@ # we've not yet verified that use works. # use strict; -print "1..25\n"; +print "1..26\n"; my $test = 0; # Historically constant folding was performed by evaluating the ops, and if @@ -139,3 +139,13 @@ print "ok ", ++$test, " - stat(const ? word : ....)\n"; # in case we are in t/ print "not " unless stat(1 ? TEST : 0) eq stat("TEST"); print "ok ", ++$test, " - stat(const ? word : ....)\n"; + +# or truncate +my $n = "for_fold_dot_t$$"; +open F, ">$n" or die "open: $!"; +print F "bralh blah blah \n"; +close F or die "close $!"; +eval "truncate 1 ? $n : 0, 0;"; +print "not " unless -z $n; +print "ok ", ++$test, " - truncate(const ? word : ...)\n"; +unlink $n; |