This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Simplify ck_grep
[perl5.git] / ext / B / t / f_map.t
index 243058c..014861a 100644 (file)
@@ -1,13 +1,7 @@
 #!perl
 
 BEGIN {
-    if ($ENV{PERL_CORE}){
-       chdir('t') if -d 't';
-       @INC = ('.', '../lib', '../ext/B/t');
-    } else {
-       unshift @INC, 't';
-       push @INC, "../../t";
-    }
+    unshift @INC, 't';
     require Config;
     if (($Config::Config{'extensions'} !~ /\bB\b/) ){
         print "1..0 # Skip -- Perl configured without B module\n";
@@ -17,10 +11,9 @@ BEGIN {
         print "1..0 # Skip -- need perlio to walk the optree\n";
         exit 0;
     }
-    # require q(test.pl); # now done by OptreeCheck
 }
 use OptreeCheck;
-plan tests => 9;
+plan tests => 18;
 
 
 =head1 f_map.t
@@ -32,7 +25,7 @@ Due to a bleadperl optimization (Dave Mitchell, circa may 04), the
 private flags /1, /2 are gone in blead (for the cases covered)
 
 When the optree stuff was integrated into 5.8.6, these tests failed,
-and were todo'd.  Theyre now done, by version-specific tweaking in
+and were todo'd.  They're now done, by version-specific tweaking in
 mkCheckRex(), therefore the skip is removed too.
 
 =for gentest
@@ -57,32 +50,32 @@ checkOptree(note   => q{},
 # 2  <0> pushmark s
 # 3  <0> pushmark s
 # 4  <#> gv[*nums] s
-# 5  <1> rv2av[t6] lKM/1
+# 5  <1> rv2av[t7] lKM/1
 # 6  <@> mapstart lK
-# 7  <|> mapwhile(other->8)[t7] lK
+# 7  <|> mapwhile(other->8)[t8] lK
 # 8      <#> gvsv[*_] s
 # 9      <1> chr[t5] sK/1
 #            goto 7
 # a  <0> pushmark s
 # b  <#> gv[*chars] s
 # c  <1> rv2av[t2] lKRM*/1
-# d  <2> aassign[t8] KS/COMMON
+# d  <2> aassign[t9] KS/COMMON
 # e  <1> leavesub[1 ref] K/REFC,1
 EOT_EOT
 # 1  <;> nextstate(main 559 (eval 15):1) v
 # 2  <0> pushmark s
 # 3  <0> pushmark s
 # 4  <$> gv(*nums) s
-# 5  <1> rv2av[t2] lKM/1
+# 5  <1> rv2av[t4] lKM/1
 # 6  <@> mapstart lK
-# 7  <|> mapwhile(other->8)[t4] lK
+# 7  <|> mapwhile(other->8)[t5] lK
 # 8      <$> gvsv(*_) s
 # 9      <1> chr[t3] sK/1
 #            goto 7
 # a  <0> pushmark s
 # b  <$> gv(*chars) s
 # c  <1> rv2av[t1] lKRM*/1
-# d  <2> aassign[t5] KS/COMMON
+# d  <2> aassign[t6] KS/COMMON
 # e  <1> leavesub[1 ref] K/REFC,1
 EONT_EONT
 
@@ -97,20 +90,20 @@ checkOptree(note   => q{},
            bcopts => q{-exec},
            code   => q{%hash = map { getkey($_) => $_ } @array; },
            expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-# 1  <;> nextstate(main 476 (eval 10):1) v
+# 1  <;> nextstate(main 476 (eval 10):1) v:{
 # 2  <0> pushmark s
 # 3  <0> pushmark s
 # 4  <#> gv[*array] s
 # 5  <1> rv2av[t8] lKM/1
-# 6  <@> mapstart lK*
+# 6  <@> mapstart lK
 # 7  <|> mapwhile(other->8)[t9] lK
 # 8      <0> enter l
-# 9      <;> nextstate(main 475 (eval 10):1) v
+# 9      <;> nextstate(main 475 (eval 10):1) v:{
 # a      <0> pushmark s
 # b      <0> pushmark s
 # c      <#> gvsv[*_] s
 # d      <#> gv[*getkey] s/EARLYCV
-# e      <1> entersub[t5] lKS/TARG,1
+# e      <1> entersub[t5] lKS/TARG
 # f      <#> gvsv[*_] s
 # g      <@> list lK
 # h      <@> leave lKP
@@ -121,20 +114,20 @@ checkOptree(note   => q{},
 # l  <2> aassign[t10] KS/COMMON
 # m  <1> leavesub[1 ref] K/REFC,1
 EOT_EOT
-# 1  <;> nextstate(main 560 (eval 15):1) v
+# 1  <;> nextstate(main 560 (eval 15):1) v:{
 # 2  <0> pushmark s
 # 3  <0> pushmark s
 # 4  <$> gv(*array) s
 # 5  <1> rv2av[t3] lKM/1
-# 6  <@> mapstart lK*
+# 6  <@> mapstart lK
 # 7  <|> mapwhile(other->8)[t4] lK
 # 8      <0> enter l
-# 9      <;> nextstate(main 559 (eval 15):1) v
+# 9      <;> nextstate(main 559 (eval 15):1) v:{
 # a      <0> pushmark s
 # b      <0> pushmark s
 # c      <$> gvsv(*_) s
 # d      <$> gv(*getkey) s/EARLYCV
-# e      <1> entersub[t2] lKS/TARG,1
+# e      <1> entersub[t2] lKS/TARG
 # f      <$> gvsv(*_) s
 # g      <@> list lK
 # h      <@> leave lKP
@@ -162,7 +155,7 @@ checkOptree(note   => q{},
            bcopts => q{-exec},
            code   => q{{ %hash = (); foreach $_ (@array) { $hash{getkey($_)} = $_; } } },
            expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
-# 1  <;> nextstate(main 478 (eval 10):1) v
+# 1  <;> nextstate(main 478 (eval 10):1) v:{
 # 2  <{> enterloop(next->u last->u redo->3) 
 # 3  <;> nextstate(main 475 (eval 10):1) v
 # 4  <0> pushmark s
@@ -170,7 +163,7 @@ checkOptree(note   => q{},
 # 6  <#> gv[*hash] s
 # 7  <1> rv2hv[t2] lKRM*/1
 # 8  <2> aassign[t3] vKS
-# 9  <;> nextstate(main 476 (eval 10):1) v
+# 9  <;> nextstate(main 476 (eval 10):1) v:{
 # a  <0> pushmark sM
 # b  <#> gv[*array] s
 # c  <1> rv2av[t6] sKRM/1
@@ -179,23 +172,23 @@ checkOptree(note   => q{},
 # f  <{> enteriter(next->q last->t redo->g) lKS/8
 # r  <0> iter s
 # s  <|> and(other->g) K/1
-# g      <;> nextstate(main 475 (eval 10):1) v
+# g      <;> nextstate(main 475 (eval 10):1) v:{
 # h      <#> gvsv[*_] s
 # i      <#> gv[*hash] s
 # j      <1> rv2hv sKR/1
 # k      <0> pushmark s
 # l      <#> gvsv[*_] s
 # m      <#> gv[*getkey] s/EARLYCV
-# n      <1> entersub[t10] sKS/TARG,1
+# n      <1> entersub[t10] sKS/TARG
 # o      <2> helem sKRM*/2
 # p      <2> sassign vKS/2
 # q      <0> unstack s
 #            goto r
-# t  <2> leaveloop K/2
+# t  <2> leaveloop KP/2
 # u  <2> leaveloop K/2
 # v  <1> leavesub[1 ref] K/REFC,1
 EOT_EOT
-# 1  <;> nextstate(main 562 (eval 15):1) v
+# 1  <;> nextstate(main 562 (eval 15):1) v:{
 # 2  <{> enterloop(next->u last->u redo->3) 
 # 3  <;> nextstate(main 559 (eval 15):1) v
 # 4  <0> pushmark s
@@ -203,7 +196,7 @@ EOT_EOT
 # 6  <$> gv(*hash) s
 # 7  <1> rv2hv[t1] lKRM*/1
 # 8  <2> aassign[t2] vKS
-# 9  <;> nextstate(main 560 (eval 15):1) v
+# 9  <;> nextstate(main 560 (eval 15):1) v:{
 # a  <0> pushmark sM
 # b  <$> gv(*array) s
 # c  <1> rv2av[t3] sKRM/1
@@ -212,19 +205,19 @@ EOT_EOT
 # f  <{> enteriter(next->q last->t redo->g) lKS/8
 # r  <0> iter s
 # s  <|> and(other->g) K/1
-# g      <;> nextstate(main 559 (eval 15):1) v
+# g      <;> nextstate(main 559 (eval 15):1) v:{
 # h      <$> gvsv(*_) s
 # i      <$> gv(*hash) s
 # j      <1> rv2hv sKR/1
 # k      <0> pushmark s
 # l      <$> gvsv(*_) s
 # m      <$> gv(*getkey) s/EARLYCV
-# n      <1> entersub[t4] sKS/TARG,1
+# n      <1> entersub[t4] sKS/TARG
 # o      <2> helem sKRM*/2
 # p      <2> sassign vKS/2
 # q      <0> unstack s
 #            goto r
-# t  <2> leaveloop K/2
+# t  <2> leaveloop KP/2
 # u  <2> leaveloop K/2
 # v  <1> leavesub[1 ref] K/REFC,1
 EONT_EONT
@@ -246,7 +239,7 @@ checkOptree(note   => q{},
 # 3  <0> pushmark s
 # 4  <#> gv[*array] s
 # 5  <1> rv2av[t7] lKM/1
-# 6  <@> mapstart lK*
+# 6  <@> mapstart lK
 # 7  <|> mapwhile(other->8)[t9] lK
 # 8      <0> pushmark s
 # 9      <#> gvsv[*_] s
@@ -254,7 +247,6 @@ checkOptree(note   => q{},
 # b      <@> stringify[t5] sK/1
 # c      <$> const[IV 1] s
 # d      <@> list lK
-# -      <@> scope lK
 #            goto 7
 # e  <0> pushmark s
 # f  <#> gv[*hash] s
@@ -267,7 +259,7 @@ EOT_EOT
 # 3  <0> pushmark s
 # 4  <$> gv(*array) s
 # 5  <1> rv2av[t4] lKM/1
-# 6  <@> mapstart lK*
+# 6  <@> mapstart lK
 # 7  <|> mapwhile(other->8)[t5] lK
 # 8      <0> pushmark s
 # 9      <$> gvsv(*_) s
@@ -275,7 +267,6 @@ EOT_EOT
 # b      <@> stringify[t3] sK/1
 # c      <$> const(IV 1) s
 # d      <@> list lK
-# -      <@> scope lK
 #            goto 7
 # e  <0> pushmark s
 # f  <$> gv(*hash) s
@@ -300,7 +291,7 @@ checkOptree(note   => q{},
 # 3  <0> pushmark s
 # 4  <#> gv[*array] s
 # 5  <1> rv2av[t7] lKM/1
-# 6  <@> mapstart lK*
+# 6  <@> mapstart lK
 # 7  <|> mapwhile(other->8)[t9] lK
 # 8      <0> pushmark s
 # 9      <#> gvsv[*_] s
@@ -308,7 +299,6 @@ checkOptree(note   => q{},
 # b      <@> stringify[t5] sK/1
 # c      <$> const[IV 1] s
 # d      <@> list lKP
-# -      <@> scope lK
 #            goto 7
 # e  <0> pushmark s
 # f  <#> gv[*hash] s
@@ -321,7 +311,7 @@ EOT_EOT
 # 3  <0> pushmark s
 # 4  <$> gv(*array) s
 # 5  <1> rv2av[t4] lKM/1
-# 6  <@> mapstart lK*
+# 6  <@> mapstart lK
 # 7  <|> mapwhile(other->8)[t5] lK
 # 8      <0> pushmark s
 # 9      <$> gvsv(*_) s
@@ -329,7 +319,6 @@ EOT_EOT
 # b      <@> stringify[t3] sK/1
 # c      <$> const(IV 1) s
 # d      <@> list lKP
-# -      <@> scope lK
 #            goto 7
 # e  <0> pushmark s
 # f  <$> gv(*hash) s
@@ -354,14 +343,13 @@ checkOptree(note   => q{},
 # 3  <0> pushmark s
 # 4  <#> gv[*array] s
 # 5  <1> rv2av[t6] lKM/1
-# 6  <@> mapstart lK*
+# 6  <@> mapstart lK
 # 7  <|> mapwhile(other->8)[t8] lK
 # 8      <0> pushmark s
 # 9      <#> gvsv[*_] s
 # a      <1> lc[t4] sK/1
 # b      <$> const[IV 1] s
 # c      <@> list lK
-# -      <@> scope lK
 #            goto 7
 # d  <0> pushmark s
 # e  <#> gv[*hash] s
@@ -374,14 +362,13 @@ EOT_EOT
 # 3  <0> pushmark s
 # 4  <$> gv(*array) s
 # 5  <1> rv2av[t3] lKM/1
-# 6  <@> mapstart lK*
+# 6  <@> mapstart lK
 # 7  <|> mapwhile(other->8)[t4] lK
 # 8      <0> pushmark s
 # 9      <$> gvsv(*_) s
 # a      <1> lc[t2] sK/1
 # b      <$> const(IV 1) s
 # c      <@> list lK
-# -      <@> scope lK
 #            goto 7
 # d  <0> pushmark s
 # e  <$> gv(*hash) s
@@ -512,14 +499,13 @@ checkOptree(note   => q{},
 # 9      <#> gvsv[*_] s
 # a      <1> lc[t4] sK/1
 # b      <$> const[IV 1] s
-# c      <@> anonhash sKRM/1
-# d      <1> srefgen sK/1
+# c      <@> anonhash sK*/1
 #            goto 7
-# e  <0> pushmark s
-# f  <#> gv[*hashes] s
-# g  <1> rv2av[t2] lKRM*/1
-# h  <2> aassign[t8] KS/COMMON
-# i  <1> leavesub[1 ref] K/REFC,1
+# d  <0> pushmark s
+# e  <#> gv[*hashes] s
+# f  <1> rv2av[t2] lKRM*/1
+# g  <2> aassign[t8] KS/COMMON
+# h  <1> leavesub[1 ref] K/REFC,1
 EOT_EOT
 # 1  <;> nextstate(main 601 (eval 32):1) v
 # 2  <0> pushmark s
@@ -532,12 +518,11 @@ EOT_EOT
 # 9      <$> gvsv(*_) s
 # a      <1> lc[t2] sK/1
 # b      <$> const(IV 1) s
-# c      <@> anonhash sKRM/1
-# d      <1> srefgen sK/1
+# c      <@> anonhash sK*/1
 #            goto 7
-# e  <0> pushmark s
-# f  <$> gv(*hashes) s
-# g  <1> rv2av[t1] lKRM*/1
-# h  <2> aassign[t5] KS/COMMON
-# i  <1> leavesub[1 ref] K/REFC,1
+# d  <0> pushmark s
+# e  <$> gv(*hashes) s
+# f  <1> rv2av[t1] lKRM*/1
+# g  <2> aassign[t5] KS/COMMON
+# h  <1> leavesub[1 ref] K/REFC,1
 EONT_EONT