diff options
author | James E Keenan <jkeenan@cpan.org> | 2013-03-05 22:37:48 -0500 |
---|---|---|
committer | James E Keenan <jkeenan@cpan.org> | 2013-03-13 21:39:26 -0400 |
commit | e150f77d7d47f85e37d9512e2695dafc13548453 (patch) | |
tree | b2f209657d10fe0884c4f484f5884356cbdbea5c | |
parent | ad0c015e9582b8fdd36defbfc629f810255c38aa (diff) | |
download | perl-e150f77d7d47f85e37d9512e2695dafc13548453.tar.gz |
Moved t/cmd/lexsub.t, t/cmd/while.t to t/op; split t/cmd/for.t to two pieces, one in t/op/for.t. Update and sort MANIFEST.
From work done at NY Perl Hackathon by Charlie Gonzalez and Taqqai Karim.
For: RT #116615
-rw-r--r-- | AUTHORS | 2 | ||||
-rw-r--r-- | MANIFEST | 5 | ||||
-rw-r--r-- | t/cmd/for.t | 575 | ||||
-rw-r--r-- | t/op/for.t | 565 | ||||
-rw-r--r-- | t/op/lexsub.t (renamed from t/cmd/lexsub.t) | 15 | ||||
-rw-r--r-- | t/op/while.t (renamed from t/cmd/while.t) | 0 |
6 files changed, 572 insertions, 590 deletions
@@ -193,6 +193,7 @@ Charles F. Randall <crandall@free.click-n-call.com> Charles Lane <lane@DUPHY4.Physics.Drexel.Edu> Charles Randall <cfriv@yahoo.com> Charles Wilson <cwilson@ece.gatech.edu> +Charlie Gonzalez <itcharlie@gmail.com> Chas. Owens <chas.owens@gmail.com> Chaskiel M Grundman Chia-liang Kao <clkao@clkao.org> @@ -808,6 +809,7 @@ Milosz Tanski <mtanski@gridapp.com> Milton L. Hankins <mlh@swl.msd.ray.com> Moritz Lenz <moritz@casella.verplant.org> Moshe Kaminsky <kaminsky@math.huji.ac.il> +Mottaqui Karim taqqui.karim@gmail.com Mr. Nobody <mrnobo1024@yahoo.com> Murray Nesbitt <murray@nesbitt.ca> Nathan Kurz <nate@valleytel.net> @@ -5050,11 +5050,9 @@ t/bigmem/read.t Check read() handles large offsets t/bigmem/vec.t Check vec() handles large offsets t/cmd/elsif.t See if else-if works t/cmd/for.t See if for loops work -t/cmd/lexsub.t See if lexical subroutines work t/cmd/mod.t See if statement modifiers work t/cmd/subval.t See if subroutine values work t/cmd/switch.t See if switch optimizations work -t/cmd/while.t See if while loops work t/comp/bproto.t See if builtins conform to their prototypes t/comp/cmdopt.t See if command optimization works t/comp/colon.t See if colons are parsed correctly @@ -5336,6 +5334,7 @@ t/op/filetest.t See if file tests work t/op/filetest_t.t See if -t file test works t/op/flip.t See if range operator works t/op/fork.t See if fork works +t/op/for.t See if for loops work t/op/fresh_perl_utf8.t UTF8 tests for pads and gvs t/op/getpid.t See if $$ and getppid work with threads t/op/getppid.t See if getppid works @@ -5365,6 +5364,7 @@ t/op/lc.t See if lc, uc, lcfirst, ucfirst, quotemeta work t/op/leaky-magic.t See whether vars' magic leaks into packages t/op/length.t See if length works t/op/lex_assign.t See if ops involving lexicals or pad temps work +t/op/lexsub.t See if lexical subroutines work t/op/lex.t Tests too complex for t/base/lex.t t/op/lfs.t See if large files work for perlio t/op/list.t See if array lists work @@ -5465,6 +5465,7 @@ t/op/vec.t See if vectors work t/op/ver.t See if v-strings and the %v format flag work t/op/wantarray.t See if wantarray works t/op/warn.t See if warn works +t/op/while.t See if while loops work t/op/write.t See if write works (formats work) t/op/yadayada.t See if ... works t/perl.supp Perl valgrind suppressions diff --git a/t/cmd/for.t b/t/cmd/for.t index 184d024fbc..27fb5a2517 100644 --- a/t/cmd/for.t +++ b/t/cmd/for.t @@ -1,6 +1,6 @@ #!./perl -print "1..118\n"; +print "1..14\n"; for ($i = 0; $i <= 10; $i++) { $x[$i] = $i; @@ -95,576 +95,3 @@ print $@ =~ /Use of freed value in iteration/ ? "ok" : "not ok", " 13\n"; print $x == 1 ? "ok" : "not ok", " 14 - double destroy, x=$x\n"; } -# A lot of tests to check that reversed for works. -my $test = 14; -sub is { - my ($got, $expected, $name) = @_; - ++$test; - if ($got eq $expected) { - print "ok $test # $name\n"; - return 1; - } - print "not ok $test # $name\n"; - print "# got '$got', expected '$expected'\n"; - return 0; -} - -@array = ('A', 'B', 'C'); -for (@array) { - $r .= $_; -} -is ($r, 'ABC', 'Forwards for array'); -$r = ''; -for (1,2,3) { - $r .= $_; -} -is ($r, '123', 'Forwards for list'); -$r = ''; -for (map {$_} @array) { - $r .= $_; -} -is ($r, 'ABC', 'Forwards for array via map'); -$r = ''; -for (map {$_} 1,2,3) { - $r .= $_; -} -is ($r, '123', 'Forwards for list via map'); -$r = ''; -for (1 .. 3) { - $r .= $_; -} -is ($r, '123', 'Forwards for list via ..'); -$r = ''; -for ('A' .. 'C') { - $r .= $_; -} -is ($r, 'ABC', 'Forwards for list via ..'); - -$r = ''; -for (reverse @array) { - $r .= $_; -} -is ($r, 'CBA', 'Reverse for array'); -$r = ''; -for (reverse 1,2,3) { - $r .= $_; -} -is ($r, '321', 'Reverse for list'); -$r = ''; -for (reverse map {$_} @array) { - $r .= $_; -} -is ($r, 'CBA', 'Reverse for array via map'); -$r = ''; -for (reverse map {$_} 1,2,3) { - $r .= $_; -} -is ($r, '321', 'Reverse for list via map'); -$r = ''; -for (reverse 1 .. 3) { - $r .= $_; -} -is ($r, '321', 'Reverse for list via ..'); -$r = ''; -for (reverse 'A' .. 'C') { - $r .= $_; -} -is ($r, 'CBA', 'Reverse for list via ..'); - -$r = ''; -for my $i (@array) { - $r .= $i; -} -is ($r, 'ABC', 'Forwards for array with var'); -$r = ''; -for my $i (1,2,3) { - $r .= $i; -} -is ($r, '123', 'Forwards for list with var'); -$r = ''; -for my $i (map {$_} @array) { - $r .= $i; -} -is ($r, 'ABC', 'Forwards for array via map with var'); -$r = ''; -for my $i (map {$_} 1,2,3) { - $r .= $i; -} -is ($r, '123', 'Forwards for list via map with var'); -$r = ''; -for my $i (1 .. 3) { - $r .= $i; -} -is ($r, '123', 'Forwards for list via .. with var'); -$r = ''; -for my $i ('A' .. 'C') { - $r .= $i; -} -is ($r, 'ABC', 'Forwards for list via .. with var'); - -$r = ''; -for my $i (reverse @array) { - $r .= $i; -} -is ($r, 'CBA', 'Reverse for array with var'); -$r = ''; -for my $i (reverse 1,2,3) { - $r .= $i; -} -is ($r, '321', 'Reverse for list with var'); -$r = ''; -for my $i (reverse map {$_} @array) { - $r .= $i; -} -is ($r, 'CBA', 'Reverse for array via map with var'); -$r = ''; -for my $i (reverse map {$_} 1,2,3) { - $r .= $i; -} -is ($r, '321', 'Reverse for list via map with var'); -$r = ''; -for my $i (reverse 1 .. 3) { - $r .= $i; -} -is ($r, '321', 'Reverse for list via .. with var'); -$r = ''; -for my $i (reverse 'A' .. 'C') { - $r .= $i; -} -is ($r, 'CBA', 'Reverse for list via .. with var'); - -# For some reason the generate optree is different when $_ is implicit. -$r = ''; -for $_ (@array) { - $r .= $_; -} -is ($r, 'ABC', 'Forwards for array with explicit $_'); -$r = ''; -for $_ (1,2,3) { - $r .= $_; -} -is ($r, '123', 'Forwards for list with explicit $_'); -$r = ''; -for $_ (map {$_} @array) { - $r .= $_; -} -is ($r, 'ABC', 'Forwards for array via map with explicit $_'); -$r = ''; -for $_ (map {$_} 1,2,3) { - $r .= $_; -} -is ($r, '123', 'Forwards for list via map with explicit $_'); -$r = ''; -for $_ (1 .. 3) { - $r .= $_; -} -is ($r, '123', 'Forwards for list via .. with var with explicit $_'); -$r = ''; -for $_ ('A' .. 'C') { - $r .= $_; -} -is ($r, 'ABC', 'Forwards for list via .. with var with explicit $_'); - -$r = ''; -for $_ (reverse @array) { - $r .= $_; -} -is ($r, 'CBA', 'Reverse for array with explicit $_'); -$r = ''; -for $_ (reverse 1,2,3) { - $r .= $_; -} -is ($r, '321', 'Reverse for list with explicit $_'); -$r = ''; -for $_ (reverse map {$_} @array) { - $r .= $_; -} -is ($r, 'CBA', 'Reverse for array via map with explicit $_'); -$r = ''; -for $_ (reverse map {$_} 1,2,3) { - $r .= $_; -} -is ($r, '321', 'Reverse for list via map with explicit $_'); -$r = ''; -for $_ (reverse 1 .. 3) { - $r .= $_; -} -is ($r, '321', 'Reverse for list via .. with var with explicit $_'); -$r = ''; -for $_ (reverse 'A' .. 'C') { - $r .= $_; -} -is ($r, 'CBA', 'Reverse for list via .. with var with explicit $_'); - -# I don't think that my is that different from our in the optree. But test a -# few: -$r = ''; -for our $i (reverse @array) { - $r .= $i; -} -is ($r, 'CBA', 'Reverse for array with our var'); -$r = ''; -for our $i (reverse 1,2,3) { - $r .= $i; -} -is ($r, '321', 'Reverse for list with our var'); -$r = ''; -for our $i (reverse map {$_} @array) { - $r .= $i; -} -is ($r, 'CBA', 'Reverse for array via map with our var'); -$r = ''; -for our $i (reverse map {$_} 1,2,3) { - $r .= $i; -} -is ($r, '321', 'Reverse for list via map with our var'); -$r = ''; -for our $i (reverse 1 .. 3) { - $r .= $i; -} -is ($r, '321', 'Reverse for list via .. with our var'); -$r = ''; -for our $i (reverse 'A' .. 'C') { - $r .= $i; -} -is ($r, 'CBA', 'Reverse for list via .. with our var'); - - -$r = ''; -for (1, reverse @array) { - $r .= $_; -} -is ($r, '1CBA', 'Reverse for array with leading value'); -$r = ''; -for ('A', reverse 1,2,3) { - $r .= $_; -} -is ($r, 'A321', 'Reverse for list with leading value'); -$r = ''; -for (1, reverse map {$_} @array) { - $r .= $_; -} -is ($r, '1CBA', 'Reverse for array via map with leading value'); -$r = ''; -for ('A', reverse map {$_} 1,2,3) { - $r .= $_; -} -is ($r, 'A321', 'Reverse for list via map with leading value'); -$r = ''; -for ('A', reverse 1 .. 3) { - $r .= $_; -} -is ($r, 'A321', 'Reverse for list via .. with leading value'); -$r = ''; -for (1, reverse 'A' .. 'C') { - $r .= $_; -} -is ($r, '1CBA', 'Reverse for list via .. with leading value'); - -$r = ''; -for (reverse (@array), 1) { - $r .= $_; -} -is ($r, 'CBA1', 'Reverse for array with trailing value'); -$r = ''; -for (reverse (1,2,3), 'A') { - $r .= $_; -} -is ($r, '321A', 'Reverse for list with trailing value'); -$r = ''; -for (reverse (map {$_} @array), 1) { - $r .= $_; -} -is ($r, 'CBA1', 'Reverse for array via map with trailing value'); -$r = ''; -for (reverse (map {$_} 1,2,3), 'A') { - $r .= $_; -} -is ($r, '321A', 'Reverse for list via map with trailing value'); -$r = ''; -for (reverse (1 .. 3), 'A') { - $r .= $_; -} -is ($r, '321A', 'Reverse for list via .. with trailing value'); -$r = ''; -for (reverse ('A' .. 'C'), 1) { - $r .= $_; -} -is ($r, 'CBA1', 'Reverse for list via .. with trailing value'); - - -$r = ''; -for $_ (1, reverse @array) { - $r .= $_; -} -is ($r, '1CBA', 'Reverse for array with leading value with explicit $_'); -$r = ''; -for $_ ('A', reverse 1,2,3) { - $r .= $_; -} -is ($r, 'A321', 'Reverse for list with leading value with explicit $_'); -$r = ''; -for $_ (1, reverse map {$_} @array) { - $r .= $_; -} -is ($r, '1CBA', - 'Reverse for array via map with leading value with explicit $_'); -$r = ''; -for $_ ('A', reverse map {$_} 1,2,3) { - $r .= $_; -} -is ($r, 'A321', 'Reverse for list via map with leading value with explicit $_'); -$r = ''; -for $_ ('A', reverse 1 .. 3) { - $r .= $_; -} -is ($r, 'A321', 'Reverse for list via .. with leading value with explicit $_'); -$r = ''; -for $_ (1, reverse 'A' .. 'C') { - $r .= $_; -} -is ($r, '1CBA', 'Reverse for list via .. with leading value with explicit $_'); - -$r = ''; -for $_ (reverse (@array), 1) { - $r .= $_; -} -is ($r, 'CBA1', 'Reverse for array with trailing value with explicit $_'); -$r = ''; -for $_ (reverse (1,2,3), 'A') { - $r .= $_; -} -is ($r, '321A', 'Reverse for list with trailing value with explicit $_'); -$r = ''; -for $_ (reverse (map {$_} @array), 1) { - $r .= $_; -} -is ($r, 'CBA1', - 'Reverse for array via map with trailing value with explicit $_'); -$r = ''; -for $_ (reverse (map {$_} 1,2,3), 'A') { - $r .= $_; -} -is ($r, '321A', - 'Reverse for list via map with trailing value with explicit $_'); -$r = ''; -for $_ (reverse (1 .. 3), 'A') { - $r .= $_; -} -is ($r, '321A', 'Reverse for list via .. with trailing value with explicit $_'); -$r = ''; -for $_ (reverse ('A' .. 'C'), 1) { - $r .= $_; -} -is ($r, 'CBA1', 'Reverse for list via .. with trailing value with explicit $_'); - -$r = ''; -for my $i (1, reverse @array) { - $r .= $i; -} -is ($r, '1CBA', 'Reverse for array with leading value and var'); -$r = ''; -for my $i ('A', reverse 1,2,3) { - $r .= $i; -} -is ($r, 'A321', 'Reverse for list with leading value and var'); -$r = ''; -for my $i (1, reverse map {$_} @array) { - $r .= $i; -} -is ($r, '1CBA', 'Reverse for array via map with leading value and var'); -$r = ''; -for my $i ('A', reverse map {$_} 1,2,3) { - $r .= $i; -} -is ($r, 'A321', 'Reverse for list via map with leading value and var'); -$r = ''; -for my $i ('A', reverse 1 .. 3) { - $r .= $i; -} -is ($r, 'A321', 'Reverse for list via .. with leading value and var'); -$r = ''; -for my $i (1, reverse 'A' .. 'C') { - $r .= $i; -} -is ($r, '1CBA', 'Reverse for list via .. with leading value and var'); - -$r = ''; -for my $i (reverse (@array), 1) { - $r .= $i; -} -is ($r, 'CBA1', 'Reverse for array with trailing value and var'); -$r = ''; -for my $i (reverse (1,2,3), 'A') { - $r .= $i; -} -is ($r, '321A', 'Reverse for list with trailing value and var'); -$r = ''; -for my $i (reverse (map {$_} @array), 1) { - $r .= $i; -} -is ($r, 'CBA1', 'Reverse for array via map with trailing value and var'); -$r = ''; -for my $i (reverse (map {$_} 1,2,3), 'A') { - $r .= $i; -} -is ($r, '321A', 'Reverse for list via map with trailing value and var'); -$r = ''; -for my $i (reverse (1 .. 3), 'A') { - $r .= $i; -} -is ($r, '321A', 'Reverse for list via .. with trailing value and var'); -$r = ''; -for my $i (reverse ('A' .. 'C'), 1) { - $r .= $i; -} -is ($r, 'CBA1', 'Reverse for list via .. with trailing value and var'); - - -$r = ''; -for (reverse 1, @array) { - $r .= $_; -} -is ($r, 'CBA1', 'Reverse for value and array'); -$r = ''; -for (reverse map {$_} 1, @array) { - $r .= $_; -} -is ($r, 'CBA1', 'Reverse for value and array via map'); -$r = ''; -for (reverse 1 .. 3, @array) { - $r .= $_; -} -is ($r, 'CBA321', 'Reverse for .. and array'); -$r = ''; -for (reverse 'X' .. 'Z', @array) { - $r .= $_; -} -is ($r, 'CBAZYX', 'Reverse for .. and array'); -$r = ''; -for (reverse map {$_} 1 .. 3, @array) { - $r .= $_; -} -is ($r, 'CBA321', 'Reverse for .. and array via map'); -$r = ''; -for (reverse map {$_} 'X' .. 'Z', @array) { - $r .= $_; -} -is ($r, 'CBAZYX', 'Reverse for .. and array via map'); - -$r = ''; -for (reverse (@array, 1)) { - $r .= $_; -} -is ($r, '1CBA', 'Reverse for array and value'); -$r = ''; -for (reverse (map {$_} @array, 1)) { - $r .= $_; -} -is ($r, '1CBA', 'Reverse for array and value via map'); - -$r = ''; -for $_ (reverse 1, @array) { - $r .= $_; -} -is ($r, 'CBA1', 'Reverse for value and array with explicit $_'); -$r = ''; -for $_ (reverse map {$_} 1, @array) { - $r .= $_; -} -is ($r, 'CBA1', 'Reverse for value and array via map with explicit $_'); -$r = ''; -for $_ (reverse 1 .. 3, @array) { - $r .= $_; -} -is ($r, 'CBA321', 'Reverse for .. and array with explicit $_'); -$r = ''; -for $_ (reverse 'X' .. 'Z', @array) { - $r .= $_; -} -is ($r, 'CBAZYX', 'Reverse for .. and array with explicit $_'); -$r = ''; -for $_ (reverse map {$_} 1 .. 3, @array) { - $r .= $_; -} -is ($r, 'CBA321', 'Reverse for .. and array via map with explicit $_'); -$r = ''; -for $_ (reverse map {$_} 'X' .. 'Z', @array) { - $r .= $_; -} -is ($r, 'CBAZYX', 'Reverse for .. and array via map with explicit $_'); - -$r = ''; -for $_ (reverse (@array, 1)) { - $r .= $_; -} -is ($r, '1CBA', 'Reverse for array and value with explicit $_'); -$r = ''; -for $_ (reverse (map {$_} @array, 1)) { - $r .= $_; -} -is ($r, '1CBA', 'Reverse for array and value via map with explicit $_'); - - -$r = ''; -for my $i (reverse 1, @array) { - $r .= $i; -} -is ($r, 'CBA1', 'Reverse for value and array with var'); -$r = ''; -for my $i (reverse map {$_} 1, @array) { - $r .= $i; -} -is ($r, 'CBA1', 'Reverse for value and array via map with var'); -$r = ''; -for my $i (reverse 1 .. 3, @array) { - $r .= $i; -} -is ($r, 'CBA321', 'Reverse for .. and array with var'); -$r = ''; -for my $i (reverse 'X' .. 'Z', @array) { - $r .= $i; -} -is ($r, 'CBAZYX', 'Reverse for .. and array with var'); -$r = ''; -for my $i (reverse map {$_} 1 .. 3, @array) { - $r .= $i; -} -is ($r, 'CBA321', 'Reverse for .. and array via map with var'); -$r = ''; -for my $i (reverse map {$_} 'X' .. 'Z', @array) { - $r .= $i; -} -is ($r, 'CBAZYX', 'Reverse for .. and array via map with var'); - -$r = ''; -for my $i (reverse (@array, 1)) { - $r .= $i; -} -is ($r, '1CBA', 'Reverse for array and value with var'); -$r = ''; -for my $i (reverse (map {$_} @array, 1)) { - $r .= $i; -} -is ($r, '1CBA', 'Reverse for array and value via map with var'); - -TODO: { - $test++; - local $TODO = "RT #1085: what should be output of perl -we 'print do { foreach (1, 2) { 1; } }'"; - if (do {17; foreach (1, 2) { 1; } } != 17) { - print "not "; - } - print "ok $test # TODO $TODO\n"; -} - -TODO: { - $test++; - no warnings 'reserved'; - local $TODO = "RT #2166: foreach spuriously autovivifies"; - my %h; - foreach (@h{a, b}) {} - if(keys(%h)) { - print "not "; - } - print "ok $test # TODO $TODO\n"; -} diff --git a/t/op/for.t b/t/op/for.t new file mode 100644 index 0000000000..93fe05e396 --- /dev/null +++ b/t/op/for.t @@ -0,0 +1,565 @@ +#!./perl + +BEGIN { + require "test.pl"; +} + +plan(104); + +# A lot of tests to check that reversed for works. +# my $test = 0; + +@array = ('A', 'B', 'C'); +for (@array) { + $r .= $_; +} +is ($r, 'ABC', 'Forwards for array'); +$r = ''; +for (1,2,3) { + $r .= $_; +} +is ($r, '123', 'Forwards for list'); +$r = ''; +for (map {$_} @array) { + $r .= $_; +} +is ($r, 'ABC', 'Forwards for array via map'); +$r = ''; +for (map {$_} 1,2,3) { + $r .= $_; +} +is ($r, '123', 'Forwards for list via map'); +$r = ''; +for (1 .. 3) { + $r .= $_; +} +is ($r, '123', 'Forwards for list via ..'); +$r = ''; +for ('A' .. 'C') { + $r .= $_; +} +is ($r, 'ABC', 'Forwards for list via ..'); + +$r = ''; +for (reverse @array) { + $r .= $_; +} +is ($r, 'CBA', 'Reverse for array'); +$r = ''; +for (reverse 1,2,3) { + $r .= $_; +} +is ($r, '321', 'Reverse for list'); +$r = ''; +for (reverse map {$_} @array) { + $r .= $_; +} +is ($r, 'CBA', 'Reverse for array via map'); +$r = ''; +for (reverse map {$_} 1,2,3) { + $r .= $_; +} +is ($r, '321', 'Reverse for list via map'); +$r = ''; +for (reverse 1 .. 3) { + $r .= $_; +} +is ($r, '321', 'Reverse for list via ..'); +$r = ''; +for (reverse 'A' .. 'C') { + $r .= $_; +} +is ($r, 'CBA', 'Reverse for list via ..'); + +$r = ''; +for my $i (@array) { + $r .= $i; +} +is ($r, 'ABC', 'Forwards for array with var'); +$r = ''; +for my $i (1,2,3) { + $r .= $i; +} +is ($r, '123', 'Forwards for list with var'); +$r = ''; +for my $i (map {$_} @array) { + $r .= $i; +} +is ($r, 'ABC', 'Forwards for array via map with var'); +$r = ''; +for my $i (map {$_} 1,2,3) { + $r .= $i; +} +is ($r, '123', 'Forwards for list via map with var'); +$r = ''; +for my $i (1 .. 3) { + $r .= $i; +} +is ($r, '123', 'Forwards for list via .. with var'); +$r = ''; +for my $i ('A' .. 'C') { + $r .= $i; +} +is ($r, 'ABC', 'Forwards for list via .. with var'); + +$r = ''; +for my $i (reverse @array) { + $r .= $i; +} +is ($r, 'CBA', 'Reverse for array with var'); +$r = ''; +for my $i (reverse 1,2,3) { + $r .= $i; +} +is ($r, '321', 'Reverse for list with var'); +$r = ''; +for my $i (reverse map {$_} @array) { + $r .= $i; +} +is ($r, 'CBA', 'Reverse for array via map with var'); +$r = ''; +for my $i (reverse map {$_} 1,2,3) { + $r .= $i; +} +is ($r, '321', 'Reverse for list via map with var'); +$r = ''; +for my $i (reverse 1 .. 3) { + $r .= $i; +} +is ($r, '321', 'Reverse for list via .. with var'); +$r = ''; +for my $i (reverse 'A' .. 'C') { + $r .= $i; +} +is ($r, 'CBA', 'Reverse for list via .. with var'); + +# For some reason the generate optree is different when $_ is implicit. +$r = ''; +for $_ (@array) { + $r .= $_; +} +is ($r, 'ABC', 'Forwards for array with explicit $_'); +$r = ''; +for $_ (1,2,3) { + $r .= $_; +} +is ($r, '123', 'Forwards for list with explicit $_'); +$r = ''; +for $_ (map {$_} @array) { + $r .= $_; +} +is ($r, 'ABC', 'Forwards for array via map with explicit $_'); +$r = ''; +for $_ (map {$_} 1,2,3) { + $r .= $_; +} +is ($r, '123', 'Forwards for list via map with explicit $_'); +$r = ''; +for $_ (1 .. 3) { + $r .= $_; +} +is ($r, '123', 'Forwards for list via .. with var with explicit $_'); +$r = ''; +for $_ ('A' .. 'C') { + $r .= $_; +} +is ($r, 'ABC', 'Forwards for list via .. with var with explicit $_'); + +$r = ''; +for $_ (reverse @array) { + $r .= $_; +} +is ($r, 'CBA', 'Reverse for array with explicit $_'); +$r = ''; +for $_ (reverse 1,2,3) { + $r .= $_; +} +is ($r, '321', 'Reverse for list with explicit $_'); +$r = ''; +for $_ (reverse map {$_} @array) { + $r .= $_; +} +is ($r, 'CBA', 'Reverse for array via map with explicit $_'); +$r = ''; +for $_ (reverse map {$_} 1,2,3) { + $r .= $_; +} +is ($r, '321', 'Reverse for list via map with explicit $_'); +$r = ''; +for $_ (reverse 1 .. 3) { + $r .= $_; +} +is ($r, '321', 'Reverse for list via .. with var with explicit $_'); +$r = ''; +for $_ (reverse 'A' .. 'C') { + $r .= $_; +} +is ($r, 'CBA', 'Reverse for list via .. with var with explicit $_'); + +# I don't think that my is that different from our in the optree. But test a +# few: +$r = ''; +for our $i (reverse @array) { + $r .= $i; +} +is ($r, 'CBA', 'Reverse for array with our var'); +$r = ''; +for our $i (reverse 1,2,3) { + $r .= $i; +} +is ($r, '321', 'Reverse for list with our var'); +$r = ''; +for our $i (reverse map {$_} @array) { + $r .= $i; +} +is ($r, 'CBA', 'Reverse for array via map with our var'); +$r = ''; +for our $i (reverse map {$_} 1,2,3) { + $r .= $i; +} +is ($r, '321', 'Reverse for list via map with our var'); +$r = ''; +for our $i (reverse 1 .. 3) { + $r .= $i; +} +is ($r, '321', 'Reverse for list via .. with our var'); +$r = ''; +for our $i (reverse 'A' .. 'C') { + $r .= $i; +} +is ($r, 'CBA', 'Reverse for list via .. with our var'); + + +$r = ''; +for (1, reverse @array) { + $r .= $_; +} +is ($r, '1CBA', 'Reverse for array with leading value'); +$r = ''; +for ('A', reverse 1,2,3) { + $r .= $_; +} +is ($r, 'A321', 'Reverse for list with leading value'); +$r = ''; +for (1, reverse map {$_} @array) { + $r .= $_; +} +is ($r, '1CBA', 'Reverse for array via map with leading value'); +$r = ''; +for ('A', reverse map {$_} 1,2,3) { + $r .= $_; +} +is ($r, 'A321', 'Reverse for list via map with leading value'); +$r = ''; +for ('A', reverse 1 .. 3) { + $r .= $_; +} +is ($r, 'A321', 'Reverse for list via .. with leading value'); +$r = ''; +for (1, reverse 'A' .. 'C') { + $r .= $_; +} +is ($r, '1CBA', 'Reverse for list via .. with leading value'); + +$r = ''; +for (reverse (@array), 1) { + $r .= $_; +} +is ($r, 'CBA1', 'Reverse for array with trailing value'); +$r = ''; +for (reverse (1,2,3), 'A') { + $r .= $_; +} +is ($r, '321A', 'Reverse for list with trailing value'); +$r = ''; +for (reverse (map {$_} @array), 1) { + $r .= $_; +} +is ($r, 'CBA1', 'Reverse for array via map with trailing value'); +$r = ''; +for (reverse (map {$_} 1,2,3), 'A') { + $r .= $_; +} +is ($r, '321A', 'Reverse for list via map with trailing value'); +$r = ''; +for (reverse (1 .. 3), 'A') { + $r .= $_; +} +is ($r, '321A', 'Reverse for list via .. with trailing value'); +$r = ''; +for (reverse ('A' .. 'C'), 1) { + $r .= $_; +} +is ($r, 'CBA1', 'Reverse for list via .. with trailing value'); + + +$r = ''; +for $_ (1, reverse @array) { + $r .= $_; +} +is ($r, '1CBA', 'Reverse for array with leading value with explicit $_'); +$r = ''; +for $_ ('A', reverse 1,2,3) { + $r .= $_; +} +is ($r, 'A321', 'Reverse for list with leading value with explicit $_'); +$r = ''; +for $_ (1, reverse map {$_} @array) { + $r .= $_; +} +is ($r, '1CBA', + 'Reverse for array via map with leading value with explicit $_'); +$r = ''; +for $_ ('A', reverse map {$_} 1,2,3) { + $r .= $_; +} +is ($r, 'A321', 'Reverse for list via map with leading value with explicit $_'); +$r = ''; +for $_ ('A', reverse 1 .. 3) { + $r .= $_; +} +is ($r, 'A321', 'Reverse for list via .. with leading value with explicit $_'); +$r = ''; +for $_ (1, reverse 'A' .. 'C') { + $r .= $_; +} +is ($r, '1CBA', 'Reverse for list via .. with leading value with explicit $_'); + +$r = ''; +for $_ (reverse (@array), 1) { + $r .= $_; +} +is ($r, 'CBA1', 'Reverse for array with trailing value with explicit $_'); +$r = ''; +for $_ (reverse (1,2,3), 'A') { + $r .= $_; +} +is ($r, '321A', 'Reverse for list with trailing value with explicit $_'); +$r = ''; +for $_ (reverse (map {$_} @array), 1) { + $r .= $_; +} +is ($r, 'CBA1', + 'Reverse for array via map with trailing value with explicit $_'); +$r = ''; +for $_ (reverse (map {$_} 1,2,3), 'A') { + $r .= $_; +} +is ($r, '321A', + 'Reverse for list via map with trailing value with explicit $_'); +$r = ''; +for $_ (reverse (1 .. 3), 'A') { + $r .= $_; +} +is ($r, '321A', 'Reverse for list via .. with trailing value with explicit $_'); +$r = ''; +for $_ (reverse ('A' .. 'C'), 1) { + $r .= $_; +} +is ($r, 'CBA1', 'Reverse for list via .. with trailing value with explicit $_'); + +$r = ''; +for my $i (1, reverse @array) { + $r .= $i; +} +is ($r, '1CBA', 'Reverse for array with leading value and var'); +$r = ''; +for my $i ('A', reverse 1,2,3) { + $r .= $i; +} +is ($r, 'A321', 'Reverse for list with leading value and var'); +$r = ''; +for my $i (1, reverse map {$_} @array) { + $r .= $i; +} +is ($r, '1CBA', 'Reverse for array via map with leading value and var'); +$r = ''; +for my $i ('A', reverse map {$_} 1,2,3) { + $r .= $i; +} +is ($r, 'A321', 'Reverse for list via map with leading value and var'); +$r = ''; +for my $i ('A', reverse 1 .. 3) { + $r .= $i; +} +is ($r, 'A321', 'Reverse for list via .. with leading value and var'); +$r = ''; +for my $i (1, reverse 'A' .. 'C') { + $r .= $i; +} +is ($r, '1CBA', 'Reverse for list via .. with leading value and var'); + +$r = ''; +for my $i (reverse (@array), 1) { + $r .= $i; +} +is ($r, 'CBA1', 'Reverse for array with trailing value and var'); +$r = ''; +for my $i (reverse (1,2,3), 'A') { + $r .= $i; +} +is ($r, '321A', 'Reverse for list with trailing value and var'); +$r = ''; +for my $i (reverse (map {$_} @array), 1) { + $r .= $i; +} +is ($r, 'CBA1', 'Reverse for array via map with trailing value and var'); +$r = ''; +for my $i (reverse (map {$_} 1,2,3), 'A') { + $r .= $i; +} +is ($r, '321A', 'Reverse for list via map with trailing value and var'); +$r = ''; +for my $i (reverse (1 .. 3), 'A') { + $r .= $i; +} +is ($r, '321A', 'Reverse for list via .. with trailing value and var'); +$r = ''; +for my $i (reverse ('A' .. 'C'), 1) { + $r .= $i; +} +is ($r, 'CBA1', 'Reverse for list via .. with trailing value and var'); + + +$r = ''; +for (reverse 1, @array) { + $r .= $_; +} +is ($r, 'CBA1', 'Reverse for value and array'); +$r = ''; +for (reverse map {$_} 1, @array) { + $r .= $_; +} +is ($r, 'CBA1', 'Reverse for value and array via map'); +$r = ''; +for (reverse 1 .. 3, @array) { + $r .= $_; +} +is ($r, 'CBA321', 'Reverse for .. and array'); +$r = ''; +for (reverse 'X' .. 'Z', @array) { + $r .= $_; +} +is ($r, 'CBAZYX', 'Reverse for .. and array'); +$r = ''; +for (reverse map {$_} 1 .. 3, @array) { + $r .= $_; +} +is ($r, 'CBA321', 'Reverse for .. and array via map'); +$r = ''; +for (reverse map {$_} 'X' .. 'Z', @array) { + $r .= $_; +} +is ($r, 'CBAZYX', 'Reverse for .. and array via map'); + +$r = ''; +for (reverse (@array, 1)) { + $r .= $_; +} +is ($r, '1CBA', 'Reverse for array and value'); +$r = ''; +for (reverse (map {$_} @array, 1)) { + $r .= $_; +} +is ($r, '1CBA', 'Reverse for array and value via map'); + +$r = ''; +for $_ (reverse 1, @array) { + $r .= $_; +} +is ($r, 'CBA1', 'Reverse for value and array with explicit $_'); +$r = ''; +for $_ (reverse map {$_} 1, @array) { + $r .= $_; +} +is ($r, 'CBA1', 'Reverse for value and array via map with explicit $_'); +$r = ''; +for $_ (reverse 1 .. 3, @array) { + $r .= $_; +} +is ($r, 'CBA321', 'Reverse for .. and array with explicit $_'); +$r = ''; +for $_ (reverse 'X' .. 'Z', @array) { + $r .= $_; +} +is ($r, 'CBAZYX', 'Reverse for .. and array with explicit $_'); +$r = ''; +for $_ (reverse map {$_} 1 .. 3, @array) { + $r .= $_; +} +is ($r, 'CBA321', 'Reverse for .. and array via map with explicit $_'); +$r = ''; +for $_ (reverse map {$_} 'X' .. 'Z', @array) { + $r .= $_; +} +is ($r, 'CBAZYX', 'Reverse for .. and array via map with explicit $_'); + +$r = ''; +for $_ (reverse (@array, 1)) { + $r .= $_; +} +is ($r, '1CBA', 'Reverse for array and value with explicit $_'); +$r = ''; +for $_ (reverse (map {$_} @array, 1)) { + $r .= $_; +} +is ($r, '1CBA', 'Reverse for array and value via map with explicit $_'); + + +$r = ''; +for my $i (reverse 1, @array) { + $r .= $i; +} +is ($r, 'CBA1', 'Reverse for value and array with var'); +$r = ''; +for my $i (reverse map {$_} 1, @array) { + $r .= $i; +} +is ($r, 'CBA1', 'Reverse for value and array via map with var'); +$r = ''; +for my $i (reverse 1 .. 3, @array) { + $r .= $i; +} +is ($r, 'CBA321', 'Reverse for .. and array with var'); +$r = ''; +for my $i (reverse 'X' .. 'Z', @array) { + $r .= $i; +} +is ($r, 'CBAZYX', 'Reverse for .. and array with var'); +$r = ''; +for my $i (reverse map {$_} 1 .. 3, @array) { + $r .= $i; +} +is ($r, 'CBA321', 'Reverse for .. and array via map with var'); +$r = ''; +for my $i (reverse map {$_} 'X' .. 'Z', @array) { + $r .= $i; +} +is ($r, 'CBAZYX', 'Reverse for .. and array via map with var'); + +$r = ''; +for my $i (reverse (@array, 1)) { + $r .= $i; +} +is ($r, '1CBA', 'Reverse for array and value with var'); +$r = ''; +for my $i (reverse (map {$_} @array, 1)) { + $r .= $i; +} +is ($r, '1CBA', 'Reverse for array and value via map with var'); + +TODO: { + if (do {17; foreach (1, 2) { 1; } } != 17) { + #print "not "; + todo_skip("RT #1085: what should be output of perl -we 'print do { foreach (1, 2) { 1; } }'"); + } +} + +TODO: { + local $TODO = "RT #2166: foreach spuriously autovivifies"; + my %h; + foreach (@h{a, b}) {} + if(keys(%h)) { + todo_skip("RT #2166: foreach spuriously autovivifies"); + } +} diff --git a/t/cmd/lexsub.t b/t/op/lexsub.t index 46bab038fd..86c7e26a14 100644 --- a/t/cmd/lexsub.t +++ b/t/op/lexsub.t @@ -8,7 +8,7 @@ BEGIN { *bar::like = *like; } no warnings 'deprecated'; -BEGIN{plan 133;} +plan 128; # -------------------- Errors with feature disabled -------------------- # @@ -95,19 +95,6 @@ sub bar::c { 43 } my $y = if if if; is $y, 42, 'our subs from other packages override all keywords'; } -# Make sure errors don't pollute the stash (see RT 116981) -{ - eval "our sub ln99{!} ln99(1)"; - eval "ln99(1)"; - like $@, "Undefined subroutine &main::ln99 called", "Bad definitions do not pollute the stash"; - isnt $::{ln99}, -1, "No placeholder was entered"; - our sub ln103; - is $::{ln103}, -1, "Placeholder was entered"; - eval "our sub ln103{!} ln103(1)"; - eval "ln103(1)"; - like $@, "Undefined subroutine &main::ln103 called", "Bad definitions do not pollute the stash"; - isnt $::{ln103}, -1, "Placeholder was removed"; -} # -------------------- state -------------------- # diff --git a/t/cmd/while.t b/t/op/while.t index 5d2af711a5..5d2af711a5 100644 --- a/t/cmd/while.t +++ b/t/op/while.t |