diff options
author | Marcus Holland-Moritz <mhx-perl@gmx.net> | 2004-03-08 22:49:55 +0100 |
---|---|---|
committer | Marcus Holland-Moritz <mhx-perl@gmx.net> | 2004-03-09 18:41:15 +0000 |
commit | 6322f62acf2738e423f19b7fa18f39498fd2a762 (patch) | |
tree | 00b3351cca22f370d0f736da5f48651ddd107c48 | |
parent | 9fa28eaf249927cc7d28642dc9ed9eb3bea68d48 (diff) | |
download | perl-6322f62acf2738e423f19b7fa18f39498fd2a762.tar.gz |
Re: undef and the range operator
Message-Id: <20040308214955.3d8be3a6@r2d2>
p4raw-id: //depot/perl@22472
-rw-r--r-- | pp_ctl.c | 1 | ||||
-rwxr-xr-x | t/op/range.t | 33 |
2 files changed, 22 insertions, 12 deletions
@@ -1056,6 +1056,7 @@ PP(pp_flip) an exception for .."0" [#18165]). AMS 20021031. */ #define RANGE_IS_NUMERIC(left,right) ( \ + (!SvOK(left) && !SvOK(right)) || \ SvNIOKp(left) || (SvOK(left) && !SvPOKp(left)) || \ SvNIOKp(right) || (SvOK(right) && !SvPOKp(right)) || \ (((!SvOK(left) && SvOK(right)) || (looks_like_number(left) && \ diff --git a/t/op/range.t b/t/op/range.t index cdc494c4ea..dcf0fcf8a5 100755 --- a/t/op/range.t +++ b/t/op/range.t @@ -1,6 +1,6 @@ #!./perl -print "1..34\n"; +print "1..37\n"; print join(':',1..5) eq '1:2:3:4:5' ? "ok 1\n" : "not ok 1\n"; @@ -87,29 +87,38 @@ print join(":",undef..'2') eq '0:1:2' ? "ok 22\n" : "not ok 22\n"; print join(":",'-2'..undef) eq '-2:-1:0' ? "ok 23\n" : "not ok 23\n"; # undef should be treated as "" for magical range -print join(":","".."B") eq '' ? "ok 24\n" : "not ok 24\n"; -print join(":",undef.."B") eq '' ? "ok 25\n" : "not ok 25\n"; -print join(":","B".."") eq '' ? "ok 26\n" : "not ok 26\n"; -print join(":","B"..undef) eq '' ? "ok 27\n" : "not ok 27\n"; +print join(":", map "[$_]", "".."B") eq '[]' ? "ok 24\n" : "not ok 24\n"; +print join(":", map "[$_]", undef.."B") eq '[]' ? "ok 25\n" : "not ok 25\n"; +print join(":", map "[$_]", "B".."") eq '' ? "ok 26\n" : "not ok 26\n"; +print join(":", map "[$_]", "B"..undef) eq '' ? "ok 27\n" : "not ok 27\n"; # undef..undef used to segfault -print join(":",undef..undef) eq '' ? "ok 28\n" : "not ok 28\n"; +print join(":", map "[$_]", undef..undef) eq '[0]' ? "ok 28\n" : "not ok 28\n"; # also test undef in foreach loops @foo=(); push @foo, $_ for undef..2; -print join(":",@foo) eq '0:1:2' ? "ok 29\n" : "not ok 29\n"; +print join(":", @foo) eq '0:1:2' ? "ok 29\n" : "not ok 29\n"; @foo=(); push @foo, $_ for -2..undef; -print join(":",@foo) eq '-2:-1:0' ? "ok 30\n" : "not ok 30\n"; +print join(":", @foo) eq '-2:-1:0' ? "ok 30\n" : "not ok 30\n"; @foo=(); push @foo, $_ for undef..'2'; -print join(":",@foo) eq '0:1:2' ? "ok 31\n" : "not ok 31\n"; +print join(":", @foo) eq '0:1:2' ? "ok 31\n" : "not ok 31\n"; @foo=(); push @foo, $_ for '-2'..undef; -print join(":",@foo) eq '-2:-1:0' ? "ok 32\n" : "not ok 32\n"; +print join(":", @foo) eq '-2:-1:0' ? "ok 32\n" : "not ok 32\n"; @foo=(); push @foo, $_ for undef.."B"; -print join(":",@foo) eq '' ? "ok 33\n" : "not ok 33\n"; +print join(":", map "[$_]", @foo) eq '[]' ? "ok 33\n" : "not ok 33\n"; + +@foo=(); push @foo, $_ for "".."B"; +print join(":", map "[$_]", @foo) eq '[]' ? "ok 34\n" : "not ok 34\n"; @foo=(); push @foo, $_ for "B"..undef; -print join(":",@foo) eq '' ? "ok 34\n" : "not ok 34\n"; +print join(":", map "[$_]", @foo) eq '' ? "ok 35\n" : "not ok 35\n"; + +@foo=(); push @foo, $_ for "B"..""; +print join(":", map "[$_]", @foo) eq '' ? "ok 36\n" : "not ok 36\n"; + +@foo=(); push @foo, $_ for undef..undef; +print join(":", map "[$_]", @foo) eq '[0]' ? "ok 37\n" : "not ok 37\n"; |