summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2012-07-25 22:07:12 -0700
committerFather Chrysostomos <sprout@cpan.org>2012-07-25 22:20:15 -0700
commit06b58b76f31d491371d0ab0c38cec33c1c7ba4ab (patch)
treeab708f3fc62b8ac9cb4ba208b96735eaace0c2e3 /t
parent42409c4069deb2417b838a49810ecbce306a72b9 (diff)
downloadperl-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.t12
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;