Make Config.t warnings and strictures clean
[p5sagit/p5-mst-13.2.git] / ext / B / t / optree_varinit.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 }
8dd2f9d4 11 if ($Config::Config{'extensions'} !~ /\bData\/Dumper\b/) {
2799c206 12 print
13 "1..0 # Skip: Data::Dumper was not built, needed by OptreeCheck\n";
14 exit 0;
15 }
724aa791 16 require './test.pl';
17}
18use OptreeCheck;
2ce64696 19use Config;
724aa791 20plan tests => 22;
2ce64696 21SKIP: {
22skip "no perlio in this build", 22 unless $Config::Config{useperlio};
23
724aa791 24pass("OPTIMIZER TESTS - VAR INITIALIZATION");
25
26checkOptree ( name => 'sub {my $a}',
27 bcopts => '-exec',
28 code => sub {my $a},
29 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
30# 1 <;> nextstate(main 45 optree.t:23) v
31# 2 <0> padsv[$a:45,46] M/LVINTRO
32# 3 <1> leavesub[1 ref] K/REFC,1
33EOT_EOT
34# 1 <;> nextstate(main 45 optree.t:23) v
35# 2 <0> padsv[$a:45,46] M/LVINTRO
36# 3 <1> leavesub[1 ref] K/REFC,1
37EONT_EONT
38
39checkOptree ( name => '-exec sub {my $a}',
40 bcopts => '-exec',
41 code => sub {my $a},
42 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 43# 1 <;> nextstate(main 49 optree.t:52) v
44# 2 <0> padsv[$a:49,50] M/LVINTRO
45# 3 <1> leavesub[1 ref] K/REFC,1
46EOT_EOT
724aa791 47# 1 <;> nextstate(main 49 optree.t:45) v
48# 2 <0> padsv[$a:49,50] M/LVINTRO
49# 3 <1> leavesub[1 ref] K/REFC,1
50EONT_EONT
51
52checkOptree ( name => 'sub {our $a}',
53 bcopts => '-exec',
54 code => sub {our $a},
55 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 561 <;> nextstate(main 21 optree.t:47) v
572 <#> gvsv[*a] s/OURINTR
583 <1> leavesub[1 ref] K/REFC,1
59EOT_EOT
724aa791 60# 1 <;> nextstate(main 51 optree.t:56) v
61# 2 <$> gvsv(*a) s/OURINTR
62# 3 <1> leavesub[1 ref] K/REFC,1
63EONT_EONT
64
65checkOptree ( name => 'sub {local $a}',
66 bcopts => '-exec',
67 code => sub {local $a},
68 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 691 <;> nextstate(main 23 optree.t:57) v
702 <#> gvsv[*a] s/LVINTRO
713 <1> leavesub[1 ref] K/REFC,1
72EOT_EOT
724aa791 73# 1 <;> nextstate(main 53 optree.t:67) v
74# 2 <$> gvsv(*a) s/LVINTRO
75# 3 <1> leavesub[1 ref] K/REFC,1
76EONT_EONT
77
78checkOptree ( name => 'my $a',
79 prog => 'my $a',
80 bcopts => '-basic',
81 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
82# 4 <@> leave[1 ref] vKP/REFC ->(end)
83# 1 <0> enter ->2
84# 2 <;> nextstate(main 1 -e:1) v ->3
85# 3 <0> padsv[$a:1,2] vM/LVINTRO ->4
86EOT_EOT
87# 4 <@> leave[1 ref] vKP/REFC ->(end)
88# 1 <0> enter ->2
89# 2 <;> nextstate(main 1 -e:1) v ->3
90# 3 <0> padsv[$a:1,2] vM/LVINTRO ->4
91EONT_EONT
92
93checkOptree ( name => 'our $a',
94 prog => 'our $a',
95 bcopts => '-basic',
96 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
974 <@> leave[1 ref] vKP/REFC ->(end)
981 <0> enter ->2
992 <;> nextstate(main 1 -e:1) v ->3
100- <1> ex-rv2sv vK/17 ->4
1013 <#> gvsv[*a] s/OURINTR ->4
102EOT_EOT
103# 4 <@> leave[1 ref] vKP/REFC ->(end)
104# 1 <0> enter ->2
105# 2 <;> nextstate(main 1 -e:1) v ->3
106# - <1> ex-rv2sv vK/17 ->4
107# 3 <$> gvsv(*a) s/OURINTR ->4
108EONT_EONT
109
110checkOptree ( name => 'local $a',
111 prog => 'local $a',
112 bcopts => '-basic',
113 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
1144 <@> leave[1 ref] vKP/REFC ->(end)
1151 <0> enter ->2
1162 <;> nextstate(main 1 -e:1) v ->3
117- <1> ex-rv2sv vKM/129 ->4
1183 <#> gvsv[*a] s/LVINTRO ->4
119EOT_EOT
120# 4 <@> leave[1 ref] vKP/REFC ->(end)
121# 1 <0> enter ->2
122# 2 <;> nextstate(main 1 -e:1) v ->3
123# - <1> ex-rv2sv vKM/129 ->4
124# 3 <$> gvsv(*a) s/LVINTRO ->4
125EONT_EONT
126
127pass("MY, OUR, LOCAL, BOTH SUB AND MAIN, = undef");
128
129checkOptree ( name => 'sub {my $a=undef}',
130 code => sub {my $a=undef},
131 bcopts => '-basic',
132 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
1333 <1> leavesub[1 ref] K/REFC,1 ->(end)
134- <@> lineseq KP ->3
1351 <;> nextstate(main 24 optree.t:99) v ->2
1362 <0> padsv[$a:24,25] sRM*/LVINTRO ->3
137EOT_EOT
138# 3 <1> leavesub[1 ref] K/REFC,1 ->(end)
139# - <@> lineseq KP ->3
140# 1 <;> nextstate(main 54 optree.t:149) v ->2
141# 2 <0> padsv[$a:54,55] sRM*/LVINTRO ->3
142EONT_EONT
143
144checkOptree ( name => 'sub {our $a=undef}',
145 code => sub {our $a=undef},
146 note => 'the global must be reset',
147 bcopts => '-basic',
148 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
1495 <1> leavesub[1 ref] K/REFC,1 ->(end)
150- <@> lineseq KP ->5
1511 <;> nextstate(main 26 optree.t:109) v ->2
1524 <2> sassign sKS/2 ->5
1532 <0> undef s ->3
154- <1> ex-rv2sv sKRM*/17 ->4
1553 <#> gvsv[*a] s/OURINTR ->4
156EOT_EOT
157# 5 <1> leavesub[1 ref] K/REFC,1 ->(end)
158# - <@> lineseq KP ->5
159# 1 <;> nextstate(main 446 optree_varinit.t:137) v ->2
160# 4 <2> sassign sKS/2 ->5
161# 2 <0> undef s ->3
162# - <1> ex-rv2sv sKRM*/17 ->4
163# 3 <$> gvsv(*a) s/OURINTR ->4
164EONT_EONT
165
166checkOptree ( name => 'sub {local $a=undef}',
167 code => sub {local $a=undef},
168 note => 'local not used enough to bother',
169 bcopts => '-basic',
170 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
1715 <1> leavesub[1 ref] K/REFC,1 ->(end)
172- <@> lineseq KP ->5
1731 <;> nextstate(main 28 optree.t:122) v ->2
1744 <2> sassign sKS/2 ->5
1752 <0> undef s ->3
176- <1> ex-rv2sv sKRM*/129 ->4
1773 <#> gvsv[*a] s/LVINTRO ->4
178EOT_EOT
179# 5 <1> leavesub[1 ref] K/REFC,1 ->(end)
180# - <@> lineseq KP ->5
181# 1 <;> nextstate(main 58 optree.t:141) v ->2
182# 4 <2> sassign sKS/2 ->5
183# 2 <0> undef s ->3
184# - <1> ex-rv2sv sKRM*/129 ->4
185# 3 <$> gvsv(*a) s/LVINTRO ->4
186EONT_EONT
187
188checkOptree ( name => 'my $a=undef',
189 prog => 'my $a=undef',
190 bcopts => '-basic',
191 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
1924 <@> leave[1 ref] vKP/REFC ->(end)
1931 <0> enter ->2
1942 <;> nextstate(main 1 -e:1) v ->3
1953 <0> padsv[$a:1,2] vRM*/LVINTRO ->4
196EOT_EOT
197# 4 <@> leave[1 ref] vKP/REFC ->(end)
198# 1 <0> enter ->2
199# 2 <;> nextstate(main 1 -e:1) v ->3
200# 3 <0> padsv[$a:1,2] vRM*/LVINTRO ->4
201EONT_EONT
202
203checkOptree ( name => 'our $a=undef',
204 prog => 'our $a=undef',
205 note => 'global must be reassigned',
206 bcopts => '-basic',
207 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
2086 <@> leave[1 ref] vKP/REFC ->(end)
2091 <0> enter ->2
2102 <;> nextstate(main 1 -e:1) v ->3
2115 <2> sassign vKS/2 ->6
2123 <0> undef s ->4
213- <1> ex-rv2sv sKRM*/17 ->5
2144 <#> gvsv[*a] s/OURINTR ->5
215EOT_EOT
216# 6 <@> leave[1 ref] vKP/REFC ->(end)
217# 1 <0> enter ->2
218# 2 <;> nextstate(main 1 -e:1) v ->3
219# 5 <2> sassign vKS/2 ->6
220# 3 <0> undef s ->4
221# - <1> ex-rv2sv sKRM*/17 ->5
222# 4 <$> gvsv(*a) s/OURINTR ->5
223EONT_EONT
224
225checkOptree ( name => 'local $a=undef',
226 prog => 'local $a=undef',
227 note => 'locals are rare, probly not worth doing',
228 bcopts => '-basic',
229 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
2306 <@> leave[1 ref] vKP/REFC ->(end)
2311 <0> enter ->2
2322 <;> nextstate(main 1 -e:1) v ->3
2335 <2> sassign vKS/2 ->6
2343 <0> undef s ->4
235- <1> ex-rv2sv sKRM*/129 ->5
2364 <#> gvsv[*a] s/LVINTRO ->5
237EOT_EOT
238# 6 <@> leave[1 ref] vKP/REFC ->(end)
239# 1 <0> enter ->2
240# 2 <;> nextstate(main 1 -e:1) v ->3
241# 5 <2> sassign vKS/2 ->6
242# 3 <0> undef s ->4
243# - <1> ex-rv2sv sKRM*/129 ->5
244# 4 <$> gvsv(*a) s/LVINTRO ->5
245EONT_EONT
246
247checkOptree ( name => 'sub {my $a=()}',
248 code => sub {my $a=()},
724aa791 249 bcopts => '-exec',
250 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 2511 <;> nextstate(main -439 optree.t:105) v
2522 <0> stub sP
2533 <0> padsv[$a:-439,-438] sRM*/LVINTRO
2544 <2> sassign sKS/2
2555 <1> leavesub[1 ref] K/REFC,1
256EOT_EOT
257# 1 <;> nextstate(main 438 optree_varinit.t:247) v
258# 2 <0> stub sP
259# 3 <0> padsv[$a:438,439] sRM*/LVINTRO
260# 4 <2> sassign sKS/2
261# 5 <1> leavesub[1 ref] K/REFC,1
262EONT_EONT
263
264checkOptree ( name => 'sub {our $a=()}',
265 code => sub {our $a=()},
266 #todo => 'probly not worth doing',
267 bcopts => '-exec',
268 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
2691 <;> nextstate(main 31 optree.t:177) v
2702 <0> stub sP
2713 <#> gvsv[*a] s/OURINTR
2724 <2> sassign sKS/2
2735 <1> leavesub[1 ref] K/REFC,1
274EOT_EOT
275# 1 <;> nextstate(main 440 optree_varinit.t:262) v
276# 2 <0> stub sP
277# 3 <$> gvsv(*a) s/OURINTR
278# 4 <2> sassign sKS/2
279# 5 <1> leavesub[1 ref] K/REFC,1
280EONT_EONT
281
282checkOptree ( name => 'sub {local $a=()}',
283 code => sub {local $a=()},
284 #todo => 'probly not worth doing',
285 bcopts => '-exec',
286 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 2871 <;> nextstate(main 33 optree.t:190) v
2882 <0> stub sP
2893 <#> gvsv[*a] s/LVINTRO
2904 <2> sassign sKS/2
2915 <1> leavesub[1 ref] K/REFC,1
292EOT_EOT
724aa791 293# 1 <;> nextstate(main 63 optree.t:225) v
294# 2 <0> stub sP
295# 3 <$> gvsv(*a) s/LVINTRO
296# 4 <2> sassign sKS/2
297# 5 <1> leavesub[1 ref] K/REFC,1
298EONT_EONT
299
300checkOptree ( name => 'my $a=()',
301 prog => 'my $a=()',
724aa791 302 bcopts => '-exec',
303 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
3041 <0> enter
3052 <;> nextstate(main 1 -e:1) v
3063 <0> stub sP
3074 <0> padsv[$a:1,2] sRM*/LVINTRO
3085 <2> sassign vKS/2
3096 <@> leave[1 ref] vKP/REFC
310EOT_EOT
311# 1 <0> enter
312# 2 <;> nextstate(main 1 -e:1) v
313# 3 <0> stub sP
314# 4 <0> padsv[$a:1,2] sRM*/LVINTRO
315# 5 <2> sassign vKS/2
316# 6 <@> leave[1 ref] vKP/REFC
317EONT_EONT
318
319checkOptree ( name => 'our $a=()',
320 prog => 'our $a=()',
321 #todo => 'probly not worth doing',
322 bcopts => '-exec',
323 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
3241 <0> enter
3252 <;> nextstate(main 1 -e:1) v
3263 <0> stub sP
3274 <#> gvsv[*a] s/OURINTR
3285 <2> sassign vKS/2
3296 <@> leave[1 ref] vKP/REFC
330EOT_EOT
331# 1 <0> enter
332# 2 <;> nextstate(main 1 -e:1) v
333# 3 <0> stub sP
334# 4 <$> gvsv(*a) s/OURINTR
335# 5 <2> sassign vKS/2
336# 6 <@> leave[1 ref] vKP/REFC
337EONT_EONT
338
339checkOptree ( name => 'local $a=()',
340 prog => 'local $a=()',
341 #todo => 'probly not worth doing',
342 bcopts => '-exec',
343 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
3441 <0> enter
3452 <;> nextstate(main 1 -e:1) v
3463 <0> stub sP
3474 <#> gvsv[*a] s/LVINTRO
3485 <2> sassign vKS/2
3496 <@> leave[1 ref] vKP/REFC
350EOT_EOT
351# 1 <0> enter
352# 2 <;> nextstate(main 1 -e:1) v
353# 3 <0> stub sP
354# 4 <$> gvsv(*a) s/LVINTRO
355# 5 <2> sassign vKS/2
356# 6 <@> leave[1 ref] vKP/REFC
357EONT_EONT
358
359checkOptree ( name => 'my ($a,$b)=()',
360 prog => 'my ($a,$b)=()',
361 #todo => 'probly not worth doing',
362 bcopts => '-exec',
363 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
364# 1 <0> enter
365# 2 <;> nextstate(main 1 -e:1) v
366# 3 <0> pushmark s
367# 4 <0> pushmark sRM*/128
368# 5 <0> padsv[$a:1,2] lRM*/LVINTRO
369# 6 <0> padsv[$b:1,2] lRM*/LVINTRO
370# 7 <2> aassign[t3] vKS
371# 8 <@> leave[1 ref] vKP/REFC
372EOT_EOT
373# 1 <0> enter
374# 2 <;> nextstate(main 1 -e:1) v
375# 3 <0> pushmark s
376# 4 <0> pushmark sRM*/128
377# 5 <0> padsv[$a:1,2] lRM*/LVINTRO
378# 6 <0> padsv[$b:1,2] lRM*/LVINTRO
379# 7 <2> aassign[t3] vKS
380# 8 <@> leave[1 ref] vKP/REFC
381EONT_EONT
382
2ce64696 383} #skip
384
724aa791 385__END__
386