This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
The op/stat.t patch in #5341 wasn't robust enough,
[perl5.git] / t / op / goto.t
index a62c899..7a5de5f 100755 (executable)
@@ -2,7 +2,7 @@
 
 # "This IS structured code.  It's just randomly structured."
 
-print "1..12\n";
+print "1..16\n";
 
 while ($?) {
     $foo = 1;
@@ -54,7 +54,28 @@ sub bar {
 exit;
 
 FINALE:
-print "ok 12\n";
+print "ok 13\n";
+
+# does goto LABEL handle block contexts correctly?
+
+my $cond = 1;
+for (1) {
+    if ($cond == 1) {
+       $cond = 0;
+       goto OTHER;
+    }
+    elsif ($cond == 0) {
+      OTHER:
+       $cond = 2;
+       print "ok 14\n";
+       goto THIRD;
+    }
+    else {
+      THIRD:
+       print "ok 15\n";
+    }
+}
+print "ok 16\n";
 exit;
 
 bypass:
@@ -93,5 +114,13 @@ print $@ =~ /Can't find label NOWHERE/ ? "ok 8\n" : "not ok 8\n";
   for (9..11)  { start(bless([$_]), 'bar'); }
 }
 
+sub auto {
+    goto &loadit;
+}
+
+sub AUTOLOAD { print @_ }
+
+auto("ok 12\n");
+
 $wherever = FINALE;
 goto $wherever;