looks_like_bool should look past scalar(). Prior to this fix, saying
scalar() caused the when() argument to be /not/ a boolean even if it
reasonably was. Perhaps something like: when( scalar /$re/ ). I don't
know any natural way someone is doing to use when(scalar ...) but it
certainly seems like it was mistakenly left out.
o->op_flags & OPf_KIDS
&& looks_like_bool(cUNOPo->op_first));
+ case OP_SCALAR:
+ return looks_like_bool(cUNOPo->op_first);
+
+
case OP_ENTERSUB:
case OP_NOT: case OP_XOR:
use strict;
use warnings;
-plan tests => 127;
+plan tests => 128;
# The behaviour of the feature pragma should be tested by lib/switch.t
# using the tests in t/lib/switch/*. This file tests the behaviour of
is($ok, 'y', "Optimized-away comparison");
}
+{
+ my $ok;
+ given(23) {
+ when (scalar 24) { $ok = 'n'; continue }
+ default { $ok = 'y' }
+ }
+ is($ok,'y','scalar()');
+}
+
# File tests
# (How to be both thorough and portable? Pinch a few ideas
# from t/op/filetest.t. We err on the side of portability for