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');
134 for (reverse @array) {
137 is ($r, 'CBA', 'Reverse for array');
139 for (reverse 1,2,3) {
142 is ($r, '321', 'Reverse for list');
144 for (reverse map {$_} @array) {
147 is ($r, 'CBA', 'Reverse for array via map');
149 for (reverse map {$_} 1,2,3) {
152 is ($r, '321', 'Reverse for list via map');
158 is ($r, 'ABC', 'Forwards for array with var');
163 is ($r, '123', 'Forwards for list with var');
165 for my $i (map {$_} @array) {
168 is ($r, 'ABC', 'Forwards for array via map with var');
170 for my $i (map {$_} 1,2,3) {
173 is ($r, '123', 'Forwards for list via map with var');
176 for my $i (reverse @array) {
179 is ($r, 'CBA', 'Reverse for array with var');
181 for my $i (reverse 1,2,3) {
184 is ($r, '321', 'Reverse for list with var');
186 for my $i (reverse map {$_} @array) {
189 is ($r, 'CBA', 'Reverse for array via map with var');
191 for my $i (reverse map {$_} 1,2,3) {
194 is ($r, '321', 'Reverse for list via map with var');
196 # For some reason the generate optree is different when $_ is implicit.
201 is ($r, 'ABC', 'Forwards for array with explicit $_');
206 is ($r, '123', 'Forwards for list with explicit $_');
208 for $_ (map {$_} @array) {
211 is ($r, 'ABC', 'Forwards for array via map with explicit $_');
213 for $_ (map {$_} 1,2,3) {
216 is ($r, '123', 'Forwards for list via map with explicit $_');
219 for $_ (reverse @array) {
222 is ($r, 'CBA', 'Reverse for array with explicit $_');
224 for $_ (reverse 1,2,3) {
227 is ($r, '321', 'Reverse for list with explicit $_');
229 for $_ (reverse map {$_} @array) {
232 is ($r, 'CBA', 'Reverse for array via map with explicit $_');
234 for $_ (reverse map {$_} 1,2,3) {
237 is ($r, '321', 'Reverse for list via map with explicit $_');
239 # I don't think that my is that different from our in the optree. But test a
242 for our $i (reverse @array) {
245 is ($r, 'CBA', 'Reverse for array with our var');
247 for our $i (reverse 1,2,3) {
250 is ($r, '321', 'Reverse for list with our var');
252 for our $i (reverse map {$_} @array) {
255 is ($r, 'CBA', 'Reverse for array via map with our var');
257 for our $i (reverse map {$_} 1,2,3) {
260 is ($r, '321', 'Reverse for list via map with our var');
264 for (1, reverse @array) {
267 is ($r, '1CBA', 'Reverse for array with leading value');
269 for ('A', reverse 1,2,3) {
272 is ($r, 'A321', 'Reverse for list with leading value');
274 for (1, reverse map {$_} @array) {
277 is ($r, '1CBA', 'Reverse for array via map with leading value');
279 for ('A', reverse map {$_} 1,2,3) {
282 is ($r, 'A321', 'Reverse for list via map with leading value');
285 for (reverse (@array), 1) {
288 is ($r, 'CBA1', 'Reverse for array with trailing value');
290 for (reverse (1,2,3), 'A') {
293 is ($r, '321A', 'Reverse for list with trailing value');
295 for (reverse (map {$_} @array), 1) {
298 is ($r, 'CBA1', 'Reverse for array via map with trailing value');
300 for (reverse (map {$_} 1,2,3), 'A') {
303 is ($r, '321A', 'Reverse for list via map with trailing value');
307 for $_ (1, reverse @array) {
310 is ($r, '1CBA', 'Reverse for array with leading value with explicit $_');
312 for $_ ('A', reverse 1,2,3) {
315 is ($r, 'A321', 'Reverse for list with leading value with explicit $_');
317 for $_ (1, reverse map {$_} @array) {
321 'Reverse for array via map with leading value with explicit $_');
323 for $_ ('A', reverse map {$_} 1,2,3) {
326 is ($r, 'A321', 'Reverse for list via map with leading value with explicit $_');
329 for $_ (reverse (@array), 1) {
332 is ($r, 'CBA1', 'Reverse for array with trailing value with explicit $_');
334 for $_ (reverse (1,2,3), 'A') {
337 is ($r, '321A', 'Reverse for list with trailing value with explicit $_');
339 for $_ (reverse (map {$_} @array), 1) {
343 'Reverse for array via map with trailing value with explicit $_');
345 for $_ (reverse (map {$_} 1,2,3), 'A') {
349 'Reverse for list via map with trailing value with explicit $_');
352 for my $i (1, reverse @array) {
355 is ($r, '1CBA', 'Reverse for array with leading value and var');
357 for my $i ('A', reverse 1,2,3) {
360 is ($r, 'A321', 'Reverse for list with leading value and var');
362 for my $i (1, reverse map {$_} @array) {
365 is ($r, '1CBA', 'Reverse for array via map with leading value and var');
367 for my $i ('A', reverse map {$_} 1,2,3) {
370 is ($r, 'A321', 'Reverse for list via map with leading value and var');
373 for my $i (reverse (@array), 1) {
376 is ($r, 'CBA1', 'Reverse for array with trailing value and var');
378 for my $i (reverse (1,2,3), 'A') {
381 is ($r, '321A', 'Reverse for list with trailing value and var');
383 for my $i (reverse (map {$_} @array), 1) {
386 is ($r, 'CBA1', 'Reverse for array via map with trailing value and var');
388 for my $i (reverse (map {$_} 1,2,3), 'A') {
391 is ($r, '321A', 'Reverse for list via map with trailing value and var');
395 for (reverse 1, @array) {
398 is ($r, 'CBA1', 'Reverse for value and array');
400 for (reverse map {$_} 1, @array) {
403 is ($r, 'CBA1', 'Reverse for value and array via map');
406 for (reverse (@array, 1)) {
409 is ($r, '1CBA', 'Reverse for array and value');
411 for (reverse (map {$_} @array, 1)) {
414 is ($r, '1CBA', 'Reverse for array and value via map');
417 for $_ (reverse 1, @array) {
420 is ($r, 'CBA1', 'Reverse for value and array with explicit $_');
422 for $_ (reverse map {$_} 1, @array) {
425 is ($r, 'CBA1', 'Reverse for value and array via map with explicit $_');
428 for $_ (reverse (@array, 1)) {
431 is ($r, '1CBA', 'Reverse for array and value with explicit $_');
433 for $_ (reverse (map {$_} @array, 1)) {
436 is ($r, '1CBA', 'Reverse for array and value via map with explicit $_');
440 for my $i (reverse 1, @array) {
443 is ($r, 'CBA1', 'Reverse for value and array with var');
445 for my $i (reverse map {$_} 1, @array) {
448 is ($r, 'CBA1', 'Reverse for value and array via map with var');
451 for my $i (reverse (@array, 1)) {
454 is ($r, '1CBA', 'Reverse for array and value with var');
456 for my $i (reverse (map {$_} @array, 1)) {
459 is ($r, '1CBA', 'Reverse for array and value via map with var');
463 local $TODO = "RT #1085: what should be output of perl -we 'print do { foreach (1, 2) { 1; } }'";
464 if (do {17; foreach (1, 2) { 1; } } != 17) {
467 print "ok $test # TODO $TODO\n";
472 no warnings 'reserved';
473 local $TODO = "RT #2166: foreach spuriously autovivifies";
475 foreach (@h{a, b}) {}
479 print "ok $test # TODO $TODO\n";