Skip tests that require Data::Dumper if it is not built
[p5sagit/p5-mst-13.2.git] / ext / B / t / optree_sort.t
CommitLineData
724aa791 1#!perl
2
3BEGIN {
4 chdir 't';
5 @INC = ('../lib', '../ext/B/t');
9cd8f857 6 require Config;
7 if (($Config::Config{'extensions'} !~ /\bB\b/) ){
8 print "1..0 # Skip -- Perl configured without B module\n";
9 exit 0;
10 }
2799c206 11 if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
12 print
13 "1..0 # Skip: Data::Dumper was not built, needed by OptreeCheck\n";
14 exit 0;
15
16 }
724aa791 17 require './test.pl';
18}
19use OptreeCheck;
2ce64696 20use Config;
724aa791 21plan tests => 11;
22
2ce64696 23SKIP: {
24skip "no perlio in this build", 11 unless $Config::Config{useperlio};
25
724aa791 26pass("SORT OPTIMIZATION");
27
28checkOptree ( name => 'sub {sort @a}',
29 code => sub {sort @a},
30 bcopts => '-exec',
31 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
32# 1 <;> nextstate(main 424 optree_sort.t:14) v
33# 2 <0> pushmark s
cc02ea56 34# 3 <#> gv[*a] s
35# 4 <1> rv2av[t2] lK/1
724aa791 36# 5 <@> sort K
37# 6 <1> leavesub[1 ref] K/REFC,1
38EOT_EOT
39# 1 <;> nextstate(main 424 optree_sort.t:14) v
40# 2 <0> pushmark s
41# 3 <$> gv(*a) s
42# 4 <1> rv2av[t1] lK/1
43# 5 <@> sort K
44# 6 <1> leavesub[1 ref] K/REFC,1
45EONT_EONT
46
47checkOptree ( name => 'sort @a',
48 prog => 'sort @a',
49 bcopts => '-exec',
50 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
511 <0> enter
522 <;> nextstate(main 1 -e:1) v
533 <0> pushmark s
544 <#> gv[*a] s
555 <1> rv2av[t2] lK/1
566 <@> sort vK
577 <@> leave[1 ref] vKP/REFC
58EOT_EOT
59# 1 <0> enter
60# 2 <;> nextstate(main 1 -e:1) v
61# 3 <0> pushmark s
62# 4 <$> gv(*a) s
63# 5 <1> rv2av[t1] lK/1
64# 6 <@> sort vK
65# 7 <@> leave[1 ref] vKP/REFC
66EONT_EONT
67
68checkOptree ( name => 'sub {@a = sort @a}',
69 code => sub {@a = sort @a},
70 bcopts => '-exec',
71 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 721 <;> nextstate(main -438 optree.t:244) v
732 <0> pushmark s
743 <0> pushmark s
754 <#> gv[*a] s
cc02ea56 765 <1> rv2av[t4] lK/1
724aa791 776 <@> sort lK
787 <0> pushmark s
798 <#> gv[*a] s
809 <1> rv2av[t2] lKRM*/1
81a <2> aassign[t\d+] KS/COMMON
82b <1> leavesub[1 ref] K/REFC,1
83EOT_EOT
84# 1 <;> nextstate(main 65 optree.t:311) v
85# 2 <0> pushmark s
86# 3 <0> pushmark s
87# 4 <$> gv(*a) s
88# 5 <1> rv2av[t2] lK/1
89# 6 <@> sort lK
90# 7 <0> pushmark s
91# 8 <$> gv(*a) s
92# 9 <1> rv2av[t1] lKRM*/1
93# a <2> aassign[t3] KS/COMMON
94# b <1> leavesub[1 ref] K/REFC,1
95EONT_EONT
96
97checkOptree ( name => '@a = sort @a',
98 prog => '@a = sort @a',
99 bcopts => '-exec',
100 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
1011 <0> enter
1022 <;> nextstate(main 1 -e:1) v
1033 <0> pushmark s
1044 <0> pushmark s
1055 <#> gv[*a] s
1066 <1> rv2av[t4] lKRM*/1
1077 <@> sort lK/INPLACE
1088 <@> leave[1 ref] vKP/REFC
109EOT_EOT
110# 1 <0> enter
111# 2 <;> nextstate(main 1 -e:1) v
112# 3 <0> pushmark s
113# 4 <0> pushmark s
114# 5 <$> gv(*a) s
115# 6 <1> rv2av[t2] lKRM*/1
116# 7 <@> sort lK/INPLACE
117# 8 <@> leave[1 ref] vKP/REFC
118EONT_EONT
119
120checkOptree ( name => 'sub {@a = sort @a; reverse @a}',
121 code => sub {@a = sort @a; reverse @a},
122 bcopts => '-exec',
123 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 1241 <;> nextstate(main -438 optree.t:286) v
1252 <0> pushmark s
1263 <0> pushmark s
1274 <#> gv[*a] s
1285 <1> rv2av[t4] lKRM*/1
1296 <@> sort lK/INPLACE
1307 <;> nextstate(main -438 optree.t:288) v
1318 <0> pushmark s
1329 <#> gv[*a] s
133a <1> rv2av[t7] lK/1
134b <@> reverse[t8] K/1
135c <1> leavesub[1 ref] K/REFC,1
136EOT_EOT
137# 1 <;> nextstate(main 66 optree.t:345) v
138# 2 <0> pushmark s
139# 3 <0> pushmark s
140# 4 <$> gv(*a) s
141# 5 <1> rv2av[t2] lKRM*/1
142# 6 <@> sort lK/INPLACE
143# 7 <;> nextstate(main 66 optree.t:346) v
144# 8 <0> pushmark s
145# 9 <$> gv(*a) s
146# a <1> rv2av[t4] lK/1
147# b <@> reverse[t5] K/1
148# c <1> leavesub[1 ref] K/REFC,1
149EONT_EONT
150
151checkOptree ( name => '@a = sort @a; reverse @a',
152 prog => '@a = sort @a; reverse @a',
153 bcopts => '-exec',
154 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
1551 <0> enter
1562 <;> nextstate(main 1 -e:1) v
1573 <0> pushmark s
1584 <0> pushmark s
1595 <#> gv[*a] s
1606 <1> rv2av[t4] lKRM*/1
1617 <@> sort lK/INPLACE
1628 <;> nextstate(main 1 -e:1) v
1639 <0> pushmark s
164a <#> gv[*a] s
165b <1> rv2av[t7] lK/1
166c <@> reverse[t8] vK/1
167d <@> leave[1 ref] vKP/REFC
168EOT_EOT
169# 1 <0> enter
170# 2 <;> nextstate(main 1 -e:1) v
171# 3 <0> pushmark s
172# 4 <0> pushmark s
173# 5 <$> gv(*a) s
174# 6 <1> rv2av[t2] lKRM*/1
175# 7 <@> sort lK/INPLACE
176# 8 <;> nextstate(main 1 -e:1) v
177# 9 <0> pushmark s
178# a <$> gv(*a) s
179# b <1> rv2av[t4] lK/1
180# c <@> reverse[t5] vK/1
181# d <@> leave[1 ref] vKP/REFC
182EONT_EONT
183
184checkOptree ( name => 'sub {my @a; @a = sort @a}',
185 code => sub {my @a; @a = sort @a},
186 bcopts => '-exec',
187 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 1881 <;> nextstate(main -437 optree.t:254) v
1892 <0> padav[@a:-437,-436] vM/LVINTRO
1903 <;> nextstate(main -436 optree.t:256) v
1914 <0> pushmark s
1925 <0> pushmark s
1936 <0> padav[@a:-437,-436] l
1947 <@> sort lK
1958 <0> pushmark s
1969 <0> padav[@a:-437,-436] lRM*
197a <2> aassign[t\d+] KS/COMMON
198b <1> leavesub[1 ref] K/REFC,1
199EOT_EOT
200# 1 <;> nextstate(main 427 optree_sort.t:172) v
201# 2 <0> padav[@a:427,428] vM/LVINTRO
202# 3 <;> nextstate(main 428 optree_sort.t:173) v
203# 4 <0> pushmark s
204# 5 <0> pushmark s
205# 6 <0> padav[@a:427,428] l
206# 7 <@> sort lK
207# 8 <0> pushmark s
208# 9 <0> padav[@a:427,428] lRM*
209# a <2> aassign[t2] KS/COMMON
210# b <1> leavesub[1 ref] K/REFC,1
211EONT_EONT
212
213checkOptree ( name => 'my @a; @a = sort @a',
214 prog => 'my @a; @a = sort @a',
215 bcopts => '-exec',
216 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
2171 <0> enter
2182 <;> nextstate(main 1 -e:1) v
2193 <0> padav[@a:1,2] vM/LVINTRO
2204 <;> nextstate(main 2 -e:1) v
2215 <0> pushmark s
2226 <0> pushmark s
2237 <0> padav[@a:1,2] lRM*
2248 <@> sort lK/INPLACE
2259 <@> leave[1 ref] vKP/REFC
226EOT_EOT
227# 1 <0> enter
228# 2 <;> nextstate(main 1 -e:1) v
229# 3 <0> padav[@a:1,2] vM/LVINTRO
230# 4 <;> nextstate(main 2 -e:1) v
231# 5 <0> pushmark s
232# 6 <0> pushmark s
233# 7 <0> padav[@a:1,2] lRM*
234# 8 <@> sort lK/INPLACE
235# 9 <@> leave[1 ref] vKP/REFC
236EONT_EONT
237
238checkOptree ( name => 'sub {my @a; @a = sort @a; push @a, 1}',
239 code => sub {my @a; @a = sort @a; push @a, 1},
240 bcopts => '-exec',
241 debug => 0,
242 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 2431 <;> nextstate(main -437 optree.t:325) v
2442 <0> padav[@a:-437,-436] vM/LVINTRO
2453 <;> nextstate(main -436 optree.t:325) v
2464 <0> pushmark s
2475 <0> pushmark s
2486 <0> padav[@a:-437,-436] lRM*
2497 <@> sort lK/INPLACE
2508 <;> nextstate(main -436 optree.t:325) v
2519 <0> pushmark s
252a <0> padav[@a:-437,-436] lRM
253b <$> const[IV 1] s
254c <@> push[t3] sK/2
255d <1> leavesub[1 ref] K/REFC,1
256EOT_EOT
257# 1 <;> nextstate(main 429 optree_sort.t:219) v
258# 2 <0> padav[@a:429,430] vM/LVINTRO
259# 3 <;> nextstate(main 430 optree_sort.t:220) v
260# 4 <0> pushmark s
261# 5 <0> pushmark s
262# 6 <0> padav[@a:429,430] lRM*
263# 7 <@> sort lK/INPLACE
264# 8 <;> nextstate(main 430 optree_sort.t:220) v
265# 9 <0> pushmark s
266# a <0> padav[@a:429,430] lRM
267# b <$> const(IV 1) s
268# c <@> push[t3] sK/2
269# d <1> leavesub[1 ref] K/REFC,1
270EONT_EONT
271
272checkOptree ( name => 'sub {my @a; @a = sort @a; 1}',
273 code => sub {my @a; @a = sort @a; 1},
274 bcopts => '-exec',
275 debug => 0,
276 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 2771 <;> nextstate(main -437 optree.t:325) v
2782 <0> padav[@a:-437,-436] vM/LVINTRO
2793 <;> nextstate(main -436 optree.t:325) v
2804 <0> pushmark s
2815 <0> pushmark s
2826 <0> padav[@a:-437,-436] lRM*
2837 <@> sort lK/INPLACE
2848 <;> nextstate(main -436 optree.t:346) v
2859 <$> const[IV 1] s
286a <1> leavesub[1 ref] K/REFC,1
287EOT_EOT
288# 1 <;> nextstate(main 431 optree_sort.t:250) v
289# 2 <0> padav[@a:431,432] vM/LVINTRO
290# 3 <;> nextstate(main 432 optree_sort.t:251) v
291# 4 <0> pushmark s
292# 5 <0> pushmark s
293# 6 <0> padav[@a:431,432] lRM*
294# 7 <@> sort lK/INPLACE
295# 8 <;> nextstate(main 432 optree_sort.t:251) v
296# 9 <$> const(IV 1) s
297# a <1> leavesub[1 ref] K/REFC,1
298EONT_EONT
299
2ce64696 300} #skip
724aa791 301
302__END__
303