5 for ($i = 0; $i <= 10; $i++) {
9 print "#1 :$y: eq :10:\n";
11 print "#1 :$y: eq :0 1 2 3 4 5 6 7 8 9 10:\n";
12 if (join(' ', @x) eq '0 1 2 3 4 5 6 7 8 9 10') {
23 if ($c == 12) {print "ok 2\n";} else {print "not ok 2\n";}
30 if (join('',@ary) eq '246810') {print "ok 3\n";} else {print "not ok 3\n";}
38 # test for internal scratch array generation
39 # this also tests that $foo was restored to 3210 after test 3
40 for (split(' ','a b c d e')) {
43 if ($foo eq '3210abcde') {print "ok 5\n";} else {print "not ok 5 $foo\n";}
45 foreach $foo (("ok 6\n","ok 7\n")) {
51 return $i if $_[0] == $i;
55 print foo(1) == 1 ? "ok" : "not ok", " 8\n";
56 print foo(2) == 2 ? "ok" : "not ok", " 9\n";
57 print foo(5) == 5 ? "ok" : "not ok", " 10\n";
67 print $a == 7 ? "ok" : "not ok", " 11\n";
73 print $loop_count == 4 ? "ok" : "not ok", " 12\n";
75 # modifying arrays in loops is a no-no
77 eval { @a = () for (1,2,@a) };
78 print $@ =~ /Use of freed value in iteration/ ? "ok" : "not ok", " 13\n";
80 # [perl #30061] double destory when same iterator variable (eg $_) used in
81 # DESTROY as used in for loop that triggered the destroy
93 $h{foo} = bless [], 'X';
94 delete $h{foo} for $h{foo}, 1;
95 print $x == 1 ? "ok" : "not ok", " 14 - double destroy, x=$x\n";
98 # A lot of tests to check that reversed for works.
101 my ($got, $expected, $name) = @_;
103 if ($got eq $expected) {
104 print "ok $test # $name\n";
107 print "not ok $test # $name\n";
108 print "# got '$got', expected '$expected'\n";
112 @array = ('A', 'B', 'C');
116 is ($r, 'ABC', 'Forwards for array');
121 is ($r, '123', 'Forwards for list');
123 for (map {$_} @array) {
126 is ($r, 'ABC', 'Forwards for array via map');
128 for (map {$_} 1,2,3) {
131 is ($r, '123', 'Forwards for list via map');
136 is ($r, '123', 'Forwards for list via ..');
141 is ($r, 'ABC', 'Forwards for list via ..');
144 for (reverse @array) {
147 is ($r, 'CBA', 'Reverse for array');
149 for (reverse 1,2,3) {
152 is ($r, '321', 'Reverse for list');
154 for (reverse map {$_} @array) {
157 is ($r, 'CBA', 'Reverse for array via map');
159 for (reverse map {$_} 1,2,3) {
162 is ($r, '321', 'Reverse for list via map');
164 for (reverse 1 .. 3) {
167 is ($r, '321', 'Reverse for list via ..');
169 for (reverse 'A' .. 'C') {
172 is ($r, 'CBA', 'Reverse for list via ..');
178 is ($r, 'ABC', 'Forwards for array with var');
183 is ($r, '123', 'Forwards for list with var');
185 for my $i (map {$_} @array) {
188 is ($r, 'ABC', 'Forwards for array via map with var');
190 for my $i (map {$_} 1,2,3) {
193 is ($r, '123', 'Forwards for list via map with var');
198 is ($r, '123', 'Forwards for list via .. with var');
200 for my $i ('A' .. 'C') {
203 is ($r, 'ABC', 'Forwards for list via .. with var');
206 for my $i (reverse @array) {
209 is ($r, 'CBA', 'Reverse for array with var');
211 for my $i (reverse 1,2,3) {
214 is ($r, '321', 'Reverse for list with var');
216 for my $i (reverse map {$_} @array) {
219 is ($r, 'CBA', 'Reverse for array via map with var');
221 for my $i (reverse map {$_} 1,2,3) {
224 is ($r, '321', 'Reverse for list via map with var');
226 for my $i (reverse 1 .. 3) {
229 is ($r, '321', 'Reverse for list via .. with var');
231 for my $i (reverse 'A' .. 'C') {
234 is ($r, 'CBA', 'Reverse for list via .. with var');
236 # For some reason the generate optree is different when $_ is implicit.
241 is ($r, 'ABC', 'Forwards for array with explicit $_');
246 is ($r, '123', 'Forwards for list with explicit $_');
248 for $_ (map {$_} @array) {
251 is ($r, 'ABC', 'Forwards for array via map with explicit $_');
253 for $_ (map {$_} 1,2,3) {
256 is ($r, '123', 'Forwards for list via map with explicit $_');
261 is ($r, '123', 'Forwards for list via .. with var with explicit $_');
263 for $_ ('A' .. 'C') {
266 is ($r, 'ABC', 'Forwards for list via .. with var with explicit $_');
269 for $_ (reverse @array) {
272 is ($r, 'CBA', 'Reverse for array with explicit $_');
274 for $_ (reverse 1,2,3) {
277 is ($r, '321', 'Reverse for list with explicit $_');
279 for $_ (reverse map {$_} @array) {
282 is ($r, 'CBA', 'Reverse for array via map with explicit $_');
284 for $_ (reverse map {$_} 1,2,3) {
287 is ($r, '321', 'Reverse for list via map with explicit $_');
289 for $_ (reverse 1 .. 3) {
292 is ($r, '321', 'Reverse for list via .. with var with explicit $_');
294 for $_ (reverse 'A' .. 'C') {
297 is ($r, 'CBA', 'Reverse for list via .. with var with explicit $_');
299 # I don't think that my is that different from our in the optree. But test a
302 for our $i (reverse @array) {
305 is ($r, 'CBA', 'Reverse for array with our var');
307 for our $i (reverse 1,2,3) {
310 is ($r, '321', 'Reverse for list with our var');
312 for our $i (reverse map {$_} @array) {
315 is ($r, 'CBA', 'Reverse for array via map with our var');
317 for our $i (reverse map {$_} 1,2,3) {
320 is ($r, '321', 'Reverse for list via map with our var');
322 for our $i (reverse 1 .. 3) {
325 is ($r, '321', 'Reverse for list via .. with our var');
327 for our $i (reverse 'A' .. 'C') {
330 is ($r, 'CBA', 'Reverse for list via .. with our var');
334 for (1, reverse @array) {
337 is ($r, '1CBA', 'Reverse for array with leading value');
339 for ('A', reverse 1,2,3) {
342 is ($r, 'A321', 'Reverse for list with leading value');
344 for (1, reverse map {$_} @array) {
347 is ($r, '1CBA', 'Reverse for array via map with leading value');
349 for ('A', reverse map {$_} 1,2,3) {
352 is ($r, 'A321', 'Reverse for list via map with leading value');
354 for ('A', reverse 1 .. 3) {
357 is ($r, 'A321', 'Reverse for list via .. with leading value');
359 for (1, reverse 'A' .. 'C') {
362 is ($r, '1CBA', 'Reverse for list via .. with leading value');
365 for (reverse (@array), 1) {
368 is ($r, 'CBA1', 'Reverse for array with trailing value');
370 for (reverse (1,2,3), 'A') {
373 is ($r, '321A', 'Reverse for list with trailing value');
375 for (reverse (map {$_} @array), 1) {
378 is ($r, 'CBA1', 'Reverse for array via map with trailing value');
380 for (reverse (map {$_} 1,2,3), 'A') {
383 is ($r, '321A', 'Reverse for list via map with trailing value');
385 for (reverse (1 .. 3), 'A') {
388 is ($r, '321A', 'Reverse for list via .. with trailing value');
390 for (reverse ('A' .. 'C'), 1) {
393 is ($r, 'CBA1', 'Reverse for list via .. with trailing value');
397 for $_ (1, reverse @array) {
400 is ($r, '1CBA', 'Reverse for array with leading value with explicit $_');
402 for $_ ('A', reverse 1,2,3) {
405 is ($r, 'A321', 'Reverse for list with leading value with explicit $_');
407 for $_ (1, reverse map {$_} @array) {
411 'Reverse for array via map with leading value with explicit $_');
413 for $_ ('A', reverse map {$_} 1,2,3) {
416 is ($r, 'A321', 'Reverse for list via map with leading value with explicit $_');
418 for $_ ('A', reverse 1 .. 3) {
421 is ($r, 'A321', 'Reverse for list via .. with leading value with explicit $_');
423 for $_ (1, reverse 'A' .. 'C') {
426 is ($r, '1CBA', 'Reverse for list via .. with leading value with explicit $_');
429 for $_ (reverse (@array), 1) {
432 is ($r, 'CBA1', 'Reverse for array with trailing value with explicit $_');
434 for $_ (reverse (1,2,3), 'A') {
437 is ($r, '321A', 'Reverse for list with trailing value with explicit $_');
439 for $_ (reverse (map {$_} @array), 1) {
443 'Reverse for array via map with trailing value with explicit $_');
445 for $_ (reverse (map {$_} 1,2,3), 'A') {
449 'Reverse for list via map with trailing value with explicit $_');
451 for $_ (reverse (1 .. 3), 'A') {
454 is ($r, '321A', 'Reverse for list via .. with trailing value with explicit $_');
456 for $_ (reverse ('A' .. 'C'), 1) {
459 is ($r, 'CBA1', 'Reverse for list via .. with trailing value with explicit $_');
462 for my $i (1, reverse @array) {
465 is ($r, '1CBA', 'Reverse for array with leading value and var');
467 for my $i ('A', reverse 1,2,3) {
470 is ($r, 'A321', 'Reverse for list with leading value and var');
472 for my $i (1, reverse map {$_} @array) {
475 is ($r, '1CBA', 'Reverse for array via map with leading value and var');
477 for my $i ('A', reverse map {$_} 1,2,3) {
480 is ($r, 'A321', 'Reverse for list via map with leading value and var');
482 for my $i ('A', reverse 1 .. 3) {
485 is ($r, 'A321', 'Reverse for list via .. with leading value and var');
487 for my $i (1, reverse 'A' .. 'C') {
490 is ($r, '1CBA', 'Reverse for list via .. with leading value and var');
493 for my $i (reverse (@array), 1) {
496 is ($r, 'CBA1', 'Reverse for array with trailing value and var');
498 for my $i (reverse (1,2,3), 'A') {
501 is ($r, '321A', 'Reverse for list with trailing value and var');
503 for my $i (reverse (map {$_} @array), 1) {
506 is ($r, 'CBA1', 'Reverse for array via map with trailing value and var');
508 for my $i (reverse (map {$_} 1,2,3), 'A') {
511 is ($r, '321A', 'Reverse for list via map with trailing value and var');
513 for my $i (reverse (1 .. 3), 'A') {
516 is ($r, '321A', 'Reverse for list via .. with trailing value and var');
518 for my $i (reverse ('A' .. 'C'), 1) {
521 is ($r, 'CBA1', 'Reverse for list via .. with trailing value and var');
525 for (reverse 1, @array) {
528 is ($r, 'CBA1', 'Reverse for value and array');
530 for (reverse map {$_} 1, @array) {
533 is ($r, 'CBA1', 'Reverse for value and array via map');
535 for (reverse 1 .. 3, @array) {
538 is ($r, 'CBA321', 'Reverse for .. and array');
540 for (reverse 'X' .. 'Z', @array) {
543 is ($r, 'CBAZYX', 'Reverse for .. and array');
545 for (reverse map {$_} 1 .. 3, @array) {
548 is ($r, 'CBA321', 'Reverse for .. and array via map');
550 for (reverse map {$_} 'X' .. 'Z', @array) {
553 is ($r, 'CBAZYX', 'Reverse for .. and array via map');
556 for (reverse (@array, 1)) {
559 is ($r, '1CBA', 'Reverse for array and value');
561 for (reverse (map {$_} @array, 1)) {
564 is ($r, '1CBA', 'Reverse for array and value via map');
567 for $_ (reverse 1, @array) {
570 is ($r, 'CBA1', 'Reverse for value and array with explicit $_');
572 for $_ (reverse map {$_} 1, @array) {
575 is ($r, 'CBA1', 'Reverse for value and array via map with explicit $_');
577 for $_ (reverse 1 .. 3, @array) {
580 is ($r, 'CBA321', 'Reverse for .. and array with explicit $_');
582 for $_ (reverse 'X' .. 'Z', @array) {
585 is ($r, 'CBAZYX', 'Reverse for .. and array with explicit $_');
587 for $_ (reverse map {$_} 1 .. 3, @array) {
590 is ($r, 'CBA321', 'Reverse for .. and array via map with explicit $_');
592 for $_ (reverse map {$_} 'X' .. 'Z', @array) {
595 is ($r, 'CBAZYX', 'Reverse for .. and array via map with explicit $_');
598 for $_ (reverse (@array, 1)) {
601 is ($r, '1CBA', 'Reverse for array and value with explicit $_');
603 for $_ (reverse (map {$_} @array, 1)) {
606 is ($r, '1CBA', 'Reverse for array and value via map with explicit $_');
610 for my $i (reverse 1, @array) {
613 is ($r, 'CBA1', 'Reverse for value and array with var');
615 for my $i (reverse map {$_} 1, @array) {
618 is ($r, 'CBA1', 'Reverse for value and array via map with var');
620 for my $i (reverse 1 .. 3, @array) {
623 is ($r, 'CBA321', 'Reverse for .. and array with var');
625 for my $i (reverse 'X' .. 'Z', @array) {
628 is ($r, 'CBAZYX', 'Reverse for .. and array with var');
630 for my $i (reverse map {$_} 1 .. 3, @array) {
633 is ($r, 'CBA321', 'Reverse for .. and array via map with var');
635 for my $i (reverse map {$_} 'X' .. 'Z', @array) {
638 is ($r, 'CBAZYX', 'Reverse for .. and array via map with var');
641 for my $i (reverse (@array, 1)) {
644 is ($r, '1CBA', 'Reverse for array and value with var');
646 for my $i (reverse (map {$_} @array, 1)) {
649 is ($r, '1CBA', 'Reverse for array and value via map with var');
653 local $TODO = "RT #1085: what should be output of perl -we 'print do { foreach (1, 2) { 1; } }'";
654 if (do {17; foreach (1, 2) { 1; } } != 17) {
657 print "ok $test # TODO $TODO\n";
662 no warnings 'reserved';
663 local $TODO = "RT #2166: foreach spuriously autovivifies";
665 foreach (@h{a, b}) {}
669 print "ok $test # TODO $TODO\n";