aelemfast optimization opclass problem (c.f. [perl #38279])
[p5sagit/p5-mst-13.2.git] / ext / B / t / optree_sort.t
index ca67990..278ebd7 100644 (file)
@@ -1,14 +1,27 @@
 #!perl
 
 BEGIN {
-    chdir 't';
-    @INC = ('../lib', '../ext/B/t');
-    require './test.pl';
+    if ($ENV{PERL_CORE}){
+       chdir('t') if -d 't';
+       @INC = ('.', '../lib', '../ext/B/t');
+    } else {
+       unshift @INC, 't';
+       push @INC, "../../t";
+    }
+    require Config;
+    if (($Config::Config{'extensions'} !~ /\bB\b/) ){
+        print "1..0 # Skip -- Perl configured without B module\n";
+        exit 0;
+    }
+    # require 'test.pl'; # now done by OptreeCheck
 }
 use OptreeCheck;
-
+use Config;
 plan tests => 11;
 
+SKIP: {
+skip "no perlio in this build", 11 unless $Config::Config{useperlio};
+
 pass("SORT OPTIMIZATION");
 
 checkOptree ( name     => 'sub {sort @a}',
@@ -17,8 +30,8 @@ checkOptree ( name    => 'sub {sort @a}',
              expect    => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
 # 1  <;> nextstate(main 424 optree_sort.t:14) v
 # 2  <0> pushmark s
-# 3  <#> gv(*a) s
-# 4  <1> rv2av[t1] lK/1
+# 3  <#> gv[*a] s
+# 4  <1> rv2av[t2] lK/1
 # 5  <@> sort K
 # 6  <1> leavesub[1 ref] K/REFC,1
 EOT_EOT
@@ -30,10 +43,13 @@ EOT_EOT
 # 6  <1> leavesub[1 ref] K/REFC,1
 EONT_EONT
 
-checkOptree ( name     => 'sort @a',
-             prog      => 'sort @a',
-             bcopts    => '-exec',
-             expect    => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
+checkOptree ( name => 'sort @a',
+             prog => 'sort @a',
+             errs => [ 'Useless use of sort in void context at -e line 1.',
+                       'Name "main::a" used only once: possible typo at -e line 1.',
+                       ],
+             bcopts => '-exec',
+             expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
 1  <0> enter 
 2  <;> nextstate(main 1 -e:1) v
 3  <0> pushmark s
@@ -55,17 +71,16 @@ checkOptree ( name  => 'sub {@a = sort @a}',
              code      => sub {@a = sort @a},
              bcopts    => '-exec',
              expect    => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-           goto -
 1  <;> nextstate(main -438 optree.t:244) v
 2  <0> pushmark s
 3  <0> pushmark s
 4  <#> gv[*a] s
-5  <1> rv2av[t2] lK/1
+5  <1> rv2av[t4] lK/1
 6  <@> sort lK
 7  <0> pushmark s
 8  <#> gv[*a] s
 9  <1> rv2av[t2] lKRM*/1
-a  <2> aassign[t\d+] KS/COMMON
+a  <2> aassign[t5] KS/COMMON
 b  <1> leavesub[1 ref] K/REFC,1
 EOT_EOT
 # 1  <;> nextstate(main 65 optree.t:311) v
@@ -108,7 +123,6 @@ checkOptree ( name  => 'sub {@a = sort @a; reverse @a}',
              code      => sub {@a = sort @a; reverse @a},
              bcopts    => '-exec',
              expect    => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-           goto -
 1  <;> nextstate(main -438 optree.t:286) v
 2  <0> pushmark s
 3  <0> pushmark s
@@ -138,6 +152,7 @@ EONT_EONT
 
 checkOptree ( name     => '@a = sort @a; reverse @a',
              prog      => '@a = sort @a; reverse @a',
+             errs      => ['Useless use of reverse in void context at -e line 1.'],
              bcopts    => '-exec',
              expect    => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
 1  <0> enter 
@@ -173,7 +188,6 @@ checkOptree ( name  => 'sub {my @a; @a = sort @a}',
              code      => sub {my @a; @a = sort @a},
              bcopts    => '-exec',
              expect    => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-           goto -
 1  <;> nextstate(main -437 optree.t:254) v
 2  <0> padav[@a:-437,-436] vM/LVINTRO
 3  <;> nextstate(main -436 optree.t:256) v
@@ -183,7 +197,7 @@ checkOptree ( name  => 'sub {my @a; @a = sort @a}',
 7  <@> sort lK
 8  <0> pushmark s
 9  <0> padav[@a:-437,-436] lRM*
-a  <2> aassign[t\d+] KS/COMMON
+a  <2> aassign[t2] KS/COMMON
 b  <1> leavesub[1 ref] K/REFC,1
 EOT_EOT
 # 1  <;> nextstate(main 427 optree_sort.t:172) v
@@ -229,7 +243,6 @@ checkOptree ( name  => 'sub {my @a; @a = sort @a; push @a, 1}',
              bcopts    => '-exec',
              debug     => 0,
              expect    => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-           goto -
 1  <;> nextstate(main -437 optree.t:325) v
 2  <0> padav[@a:-437,-436] vM/LVINTRO
 3  <;> nextstate(main -436 optree.t:325) v
@@ -264,7 +277,6 @@ checkOptree ( name  => 'sub {my @a; @a = sort @a; 1}',
              bcopts    => '-exec',
              debug     => 0,
              expect    => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-           goto -
 1  <;> nextstate(main -437 optree.t:325) v
 2  <0> padav[@a:-437,-436] vM/LVINTRO
 3  <;> nextstate(main -436 optree.t:325) v
@@ -288,6 +300,7 @@ EOT_EOT
 # a  <1> leavesub[1 ref] K/REFC,1
 EONT_EONT
 
+} #skip
 
 __END__