This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
regcomp.c: Use symbolic constant instead of number
[perl5.git] / ext / B / t / optree_misc.t
CommitLineData
c60fdceb
SM
1#!perl
2
3BEGIN {
74517a3a 4 unshift @INC, 't';
c60fdceb
SM
5 require Config;
6 if (($Config::Config{'extensions'} !~ /\bB\b/) ){
7 print "1..0 # Skip -- Perl configured without B module\n";
8 exit 0;
9 }
10}
11use OptreeCheck;
12use Config;
2721a2ca 13plan tests => 18;
c60fdceb
SM
14
15SKIP: {
3857d07c 16skip "no perlio in this build", 4 unless $Config::Config{useperlio};
c60fdceb 17
93bad3fd 18# The regression this was testing is that the first aelemfast, derived
c60fdceb
SM
19# from a lexical array, is supposed to be a BASEOP "<0>", while the
20# second, from a global, is an SVOP "<$>" or a PADOP "<#>" depending
21# on threading. In buggy versions, both showed up as SVOPs/PADOPs. See
22# B.xs:cc_opclass() for the relevant code.
23
93bad3fd
NC
24# All this is much simpler, now that aelemfast_lex has been broken out from
25# aelemfast
c60fdceb 26checkOptree ( name => 'OP_AELEMFAST opclass',
b024352e 27 code => sub { my @x; our @y; $x[127] + $y[-128]},
be2b1c74 28 strip_open_hints => 1,
c60fdceb
SM
29 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
30# a <1> leavesub[1 ref] K/REFC,1 ->(end)
31# - <@> lineseq KP ->a
be2b1c74 32# 1 <;> nextstate(main 634 optree_misc.t:25) v:>,<,% ->2
c60fdceb 33# 2 <0> padav[@x:634,636] vM/LVINTRO ->3
be2b1c74 34# 3 <;> nextstate(main 635 optree_misc.t:25) v:>,<,% ->4
c60fdceb
SM
35# 5 <1> rv2av[t4] vK/OURINTR,1 ->6
36# 4 <#> gv[*y] s ->5
be2b1c74 37# 6 <;> nextstate(main 636 optree_misc.t:25) v:>,<,%,{ ->7
c60fdceb
SM
38# 9 <2> add[t6] sK/2 ->a
39# - <1> ex-aelem sK/2 ->8
b024352e 40# 7 <0> aelemfast_lex[@x:634,636] sR/127 ->8
c60fdceb
SM
41# - <0> ex-const s ->-
42# - <1> ex-aelem sK/2 ->9
43# - <1> ex-rv2av sKR/1 ->-
b024352e
DM
44# 8 <#> aelemfast[*y] s/128 ->9
45# - <0> ex-const s/FOLD ->-
c60fdceb
SM
46EOT_EOT
47# a <1> leavesub[1 ref] K/REFC,1 ->(end)
48# - <@> lineseq KP ->a
be2b1c74 49# 1 <;> nextstate(main 634 optree_misc.t:27) v:>,<,% ->2
c60fdceb 50# 2 <0> padav[@x:634,636] vM/LVINTRO ->3
be2b1c74 51# 3 <;> nextstate(main 635 optree_misc.t:27) v:>,<,% ->4
c60fdceb
SM
52# 5 <1> rv2av[t3] vK/OURINTR,1 ->6
53# 4 <$> gv(*y) s ->5
be2b1c74 54# 6 <;> nextstate(main 636 optree_misc.t:27) v:>,<,%,{ ->7
c60fdceb
SM
55# 9 <2> add[t4] sK/2 ->a
56# - <1> ex-aelem sK/2 ->8
b024352e 57# 7 <0> aelemfast_lex[@x:634,636] sR/127 ->8
c60fdceb
SM
58# - <0> ex-const s ->-
59# - <1> ex-aelem sK/2 ->9
60# - <1> ex-rv2av sKR/1 ->-
b024352e
DM
61# 8 <$> aelemfast(*y) s/128 ->9
62# - <0> ex-const s/FOLD ->-
c60fdceb
SM
63EONT_EONT
64
0090231f
NC
65checkOptree ( name => 'PMOP children',
66 code => sub { $foo =~ s/(a)/$1/ },
67 strip_open_hints => 1,
82aeefe1
DM
68 ( $] < 5.017002
69 ? (expect => <<'EOT_EOT16', expect_nt => <<'EONT_EONT16')
70# 6 <1> leavesub[1 ref] K/REFC,1 ->(end)
71# - <@> lineseq KP ->6
72# 1 <;> nextstate(main 1 -e:1) v:>,<,%,{ ->2
73# 3 </> subst(/"(a)"/ replstart->4) KS ->6
74# - <1> ex-rv2sv sKRM/1 ->3
75# 2 <#> gvsv[*foo] s ->3
76# 5 <|> substcont(other->3) sK/1 ->(end)
77# - <1> ex-rv2sv sK/1 ->5
78# 4 <#> gvsv[*1] s ->5
79EOT_EOT16
80# 6 <1> leavesub[1 ref] K/REFC,1 ->(end)
81# - <@> lineseq KP ->6
82# 1 <;> nextstate(main 1 -e:1) v:>,<,%,{ ->2
83# 3 </> subst(/"(a)"/ replstart->4) KS ->6
84# - <1> ex-rv2sv sKRM/1 ->3
85# 2 <$> gvsv(*foo) s ->3
86# 5 <|> substcont(other->3) sK/1 ->(end)
87# - <1> ex-rv2sv sK/1 ->5
88# 4 <$> gvsv(*1) s ->5
89EONT_EONT16
90
91 : (expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT')));
bb933b9b
FC
92# 5 <1> leavesub[1 ref] K/REFC,1 ->(end)
93# - <@> lineseq KP ->5
0090231f 94# 1 <;> nextstate(main 1 -e:1) v:>,<,%,{ ->2
bb933b9b 95# 4 </> subst(/"(a)"/) KS ->5
0090231f
NC
96# - <1> ex-rv2sv sKRM/1 ->3
97# 2 <#> gvsv[*foo] s ->3
bb933b9b
FC
98# - <1> ex-rv2sv sK/1 ->4
99# 3 <#> gvsv[*1] s ->4
0090231f 100EOT_EOT
bb933b9b
FC
101# 5 <1> leavesub[1 ref] K/REFC,1 ->(end)
102# - <@> lineseq KP ->5
0090231f 103# 1 <;> nextstate(main 1 -e:1) v:>,<,%,{ ->2
bb933b9b 104# 4 </> subst(/"(a)"/) KS ->5
0090231f
NC
105# - <1> ex-rv2sv sKRM/1 ->3
106# 2 <$> gvsv(*foo) s ->3
bb933b9b
FC
107# - <1> ex-rv2sv sK/1 ->4
108# 3 <$> gvsv(*1) s ->4
0090231f 109EONT_EONT
c60fdceb
SM
110
111} #skip
112
50786ba8
NC
113my $t = <<'EOT_EOT';
114# 8 <@> leave[1 ref] vKP/REFC ->(end)
115# 1 <0> enter ->2
2acfb4e0 116# 2 <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3
50786ba8
NC
117# 7 <2> sassign vKS/2 ->8
118# 5 <@> index[t2] sK/2 ->6
119# - <0> ex-pushmark s ->3
120# 3 <$> const[PV "foo"] s ->4
c13a5c80 121# 4 <$> const[PVMG "foo"] s ->5
50786ba8
NC
122# - <1> ex-rv2sv sKRM*/1 ->7
123# 6 <#> gvsv[*_] s ->7
124EOT_EOT
125my $nt = <<'EONT_EONT';
126# 8 <@> leave[1 ref] vKP/REFC ->(end)
127# 1 <0> enter ->2
2acfb4e0 128# 2 <;> nextstate(main 1 -e:1) v:>,<,%,{ ->3
50786ba8
NC
129# 7 <2> sassign vKS/2 ->8
130# 5 <@> index[t1] sK/2 ->6
131# - <0> ex-pushmark s ->3
132# 3 <$> const(PV "foo") s ->4
c13a5c80 133# 4 <$> const(PVMG "foo") s ->5
50786ba8
NC
134# - <1> ex-rv2sv sKRM*/1 ->7
135# 6 <$> gvsv(*_) s ->7
136EONT_EONT
137
50786ba8 138checkOptree ( name => 'index and PVBM',
22aebd37 139 prog => '$_ = index q(foo), q(foo)',
2acfb4e0 140 strip_open_hints => 1,
50786ba8 141 expect => $t, expect_nt => $nt);
35f75594 142
f85f6494
SH
143my $tmpfile = tempfile();
144open my $fh, '>', $tmpfile or die "Cannot open $tmpfile: $!";
145print $fh "no warnings;format =\n@<<<\n\$a\n@>>>\n\@b\n.";
146close $fh;
147
35f75594
FC
148checkOptree ( name => 'formats',
149 bcopts => 'STDOUT',
f85f6494 150 progfile => $tmpfile,
35f75594 151 strip_open_hints => 1,
82aeefe1 152 skip => ($] < 5.017003),
35f75594
FC
153 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
154# main::STDOUT (FORMAT):
155# c <1> leavewrite[1 ref] K/REFC,1 ->(end)
156# - <@> lineseq KP ->c
1473b834 157# 1 <;> nextstate(main 1 -:4) v:>,<,% ->2
35f75594
FC
158# 5 <@> formline vK/2 ->6
159# 2 <0> pushmark s ->3
160# 3 <$> const[PV "@<<<\n"] s ->4
161# - <@> lineseq lK ->5
162# - <0> ex-nextstate v ->4
163# - <1> ex-rv2sv sK/1 ->-
164# 4 <#> gvsv[*a] s ->5
1473b834 165# 6 <;> nextstate(main 1 -:6) v:>,<,% ->7
35f75594
FC
166# b <@> formline sK/2 ->c
167# 7 <0> pushmark s ->8
168# 8 <$> const[PV "@>>>\n"] s ->9
169# - <@> lineseq lK ->b
170# - <0> ex-nextstate v ->9
171# a <1> rv2av[t3] lK/1 ->b
172# 9 <#> gv[*b] s ->a
173EOT_EOT
174# main::STDOUT (FORMAT):
175# c <1> leavewrite[1 ref] K/REFC,1 ->(end)
176# - <@> lineseq KP ->c
1473b834 177# 1 <;> nextstate(main 1 -:4) v:>,<,% ->2
35f75594
FC
178# 5 <@> formline vK/2 ->6
179# 2 <0> pushmark s ->3
180# 3 <$> const(PV "@<<<\n") s ->4
181# - <@> lineseq lK ->5
182# - <0> ex-nextstate v ->4
183# - <1> ex-rv2sv sK/1 ->-
184# 4 <$> gvsv(*a) s ->5
1473b834 185# 6 <;> nextstate(main 1 -:6) v:>,<,% ->7
35f75594
FC
186# b <@> formline sK/2 ->c
187# 7 <0> pushmark s ->8
188# 8 <$> const(PV "@>>>\n") s ->9
189# - <@> lineseq lK ->b
190# - <0> ex-nextstate v ->9
191# a <1> rv2av[t3] lK/1 ->b
192# 9 <$> gv(*b) s ->a
193EONT_EONT
f85f6494 194
d5524600
DM
195checkOptree ( name => 'padrange',
196 code => sub { my ($x,$y); @a = ($x,$y); ($x,$y) = @a },
197 strip_open_hints => 1,
198 skip => ($] < 5.017006),
199 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
200# f <1> leavesub[1 ref] K/REFC,1 ->(end)
201# - <@> lineseq KP ->f
e7fd4fe6 202# 1 <;> nextstate(main 1 -e:1) v:>,<,% ->2
d5524600
DM
203# - <@> list vKP ->3
204# 2 <0> padrange[$x:1,2; $y:1,2] vM/LVINTRO,2 ->3
205# - <0> padsv[$x:1,2] vM/LVINTRO ->-
206# - <0> padsv[$y:1,2] vM/LVINTRO ->-
e7fd4fe6 207# 3 <;> nextstate(main 2 -e:1) v:>,<,% ->4
d5524600
DM
208# 8 <2> aassign[t4] vKS ->9
209# - <1> ex-list lKP ->5
210# 4 <0> padrange[$x:1,2; $y:1,2] l/2 ->5
211# - <0> padsv[$x:1,2] l ->-
212# - <0> padsv[$y:1,2] l ->-
213# - <1> ex-list lK ->8
214# 5 <0> pushmark s ->6
215# 7 <1> rv2av[t3] lKRM*/1 ->8
216# 6 <#> gv[*a] s ->7
e7fd4fe6 217# 9 <;> nextstate(main 2 -e:1) v:>,<,%,{ ->a
d5524600
DM
218# e <2> aassign[t6] KS ->f
219# - <1> ex-list lK ->d
220# a <0> pushmark s ->b
221# c <1> rv2av[t5] lK/1 ->d
222# b <#> gv[*a] s ->c
223# - <1> ex-list lKPRM* ->e
224# d <0> padrange[$x:1,2; $y:1,2] lRM/2 ->e
225# - <0> padsv[$x:1,2] lRM* ->-
226# - <0> padsv[$y:1,2] lRM* ->-
227EOT_EOT
228# f <1> leavesub[1 ref] K/REFC,1 ->(end)
229# - <@> lineseq KP ->f
e7fd4fe6 230# 1 <;> nextstate(main 1 -e:1) v:>,<,% ->2
d5524600
DM
231# - <@> list vKP ->3
232# 2 <0> padrange[$x:1,2; $y:1,2] vM/LVINTRO,2 ->3
233# - <0> padsv[$x:1,2] vM/LVINTRO ->-
234# - <0> padsv[$y:1,2] vM/LVINTRO ->-
e7fd4fe6 235# 3 <;> nextstate(main 2 -e:1) v:>,<,% ->4
d5524600
DM
236# 8 <2> aassign[t4] vKS ->9
237# - <1> ex-list lKP ->5
238# 4 <0> padrange[$x:1,2; $y:1,2] l/2 ->5
239# - <0> padsv[$x:1,2] l ->-
240# - <0> padsv[$y:1,2] l ->-
241# - <1> ex-list lK ->8
242# 5 <0> pushmark s ->6
243# 7 <1> rv2av[t3] lKRM*/1 ->8
244# 6 <$> gv(*a) s ->7
e7fd4fe6 245# 9 <;> nextstate(main 2 -e:1) v:>,<,%,{ ->a
d5524600
DM
246# e <2> aassign[t6] KS ->f
247# - <1> ex-list lK ->d
248# a <0> pushmark s ->b
249# c <1> rv2av[t5] lK/1 ->d
250# b <$> gv(*a) s ->c
251# - <1> ex-list lKPRM* ->e
252# d <0> padrange[$x:1,2; $y:1,2] lRM/2 ->e
253# - <0> padsv[$x:1,2] lRM* ->-
254# - <0> padsv[$y:1,2] lRM* ->-
255EONT_EONT
256
257checkOptree ( name => 'padrange and @_',
258 code => sub { my ($a,$b) = @_;
259 my ($c,$d) = @X::_;
260 package Y;
261 my ($e,$f) = @_;
262 },
263 strip_open_hints => 1,
264 skip => ($] < 5.017006),
265 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
266# d <1> leavesub[1 ref] K/REFC,1 ->(end)
267# - <@> lineseq KP ->d
e7fd4fe6 268# 1 <;> nextstate(main 1 p3:1) v:>,<,% ->2
d5524600
DM
269# 3 <2> aassign[t5] vKS ->4
270# - <1> ex-list lK ->-
271# 2 <0> padrange[$a:1,4; $b:1,4] l*/LVINTRO,2 ->3
272# - <1> rv2av[t4] lK/1 ->-
273# - <#> gv[*_] s ->-
274# - <1> ex-list lKPRM* ->3
275# - <0> pushmark sRM*/LVINTRO ->-
276# - <0> padsv[$a:1,4] lRM*/LVINTRO ->-
277# - <0> padsv[$b:1,4] lRM*/LVINTRO ->-
e7fd4fe6 278# 4 <;> nextstate(main 2 p3:2) v:>,<,% ->5
d5524600
DM
279# 9 <2> aassign[t10] vKS ->a
280# - <1> ex-list lK ->8
281# 5 <0> pushmark s ->6
282# 7 <1> rv2av[t9] lK/1 ->8
283# 6 <#> gv[*X::_] s ->7
284# - <1> ex-list lKPRM* ->9
285# 8 <0> padrange[$c:2,4; $d:2,4] lRM/LVINTRO,2 ->9
286# - <0> padsv[$c:2,4] lRM*/LVINTRO ->-
287# - <0> padsv[$d:2,4] lRM*/LVINTRO ->-
e7fd4fe6 288# a <;> nextstate(Y 3 p3:4) v:>,<,%,{ ->b
d5524600
DM
289# c <2> aassign[t15] KS ->d
290# - <1> ex-list lK ->-
291# b <0> padrange[$e:3,4; $f:3,4] l*/LVINTRO,2 ->c
292# - <1> rv2av[t14] lK/1 ->-
293# - <#> gv[*_] s ->-
294# - <1> ex-list lKPRM* ->c
295# - <0> pushmark sRM*/LVINTRO ->-
296# - <0> padsv[$e:3,4] lRM*/LVINTRO ->-
297# - <0> padsv[$f:3,4] lRM*/LVINTRO ->-
298EOT_EOT
299# d <1> leavesub[1 ref] K/REFC,1 ->(end)
300# - <@> lineseq KP ->d
e7fd4fe6 301# 1 <;> nextstate(main 1 p3:1) v:>,<,% ->2
d5524600
DM
302# 3 <2> aassign[t5] vKS ->4
303# - <1> ex-list lK ->-
304# 2 <0> padrange[$a:1,4; $b:1,4] l*/LVINTRO,2 ->3
305# - <1> rv2av[t4] lK/1 ->-
306# - <$> gv(*_) s ->-
307# - <1> ex-list lKPRM* ->3
308# - <0> pushmark sRM*/LVINTRO ->-
309# - <0> padsv[$a:1,4] lRM*/LVINTRO ->-
310# - <0> padsv[$b:1,4] lRM*/LVINTRO ->-
e7fd4fe6 311# 4 <;> nextstate(main 2 p3:2) v:>,<,% ->5
d5524600
DM
312# 9 <2> aassign[t10] vKS ->a
313# - <1> ex-list lK ->8
314# 5 <0> pushmark s ->6
315# 7 <1> rv2av[t9] lK/1 ->8
316# 6 <$> gv(*X::_) s ->7
317# - <1> ex-list lKPRM* ->9
318# 8 <0> padrange[$c:2,4; $d:2,4] lRM/LVINTRO,2 ->9
319# - <0> padsv[$c:2,4] lRM*/LVINTRO ->-
320# - <0> padsv[$d:2,4] lRM*/LVINTRO ->-
e7fd4fe6 321# a <;> nextstate(Y 3 p3:4) v:>,<,%,{ ->b
d5524600
DM
322# c <2> aassign[t15] KS ->d
323# - <1> ex-list lK ->-
324# b <0> padrange[$e:3,4; $f:3,4] l*/LVINTRO,2 ->c
325# - <1> rv2av[t14] lK/1 ->-
326# - <$> gv(*_) s ->-
327# - <1> ex-list lKPRM* ->c
328# - <0> pushmark sRM*/LVINTRO ->-
329# - <0> padsv[$e:3,4] lRM*/LVINTRO ->-
330# - <0> padsv[$f:3,4] lRM*/LVINTRO ->-
331EONT_EONT
332
4774ee0a
DM
333checkOptree ( name => 'consolidate padranges',
334 code => sub { my ($a,$b); my ($c,$d); 1 },
335 strip_open_hints => 1,
336 skip => ($] < 5.017006),
337 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
338# 5 <1> leavesub[1 ref] K/REFC,1 ->(end)
339# - <@> lineseq KP ->5
e7fd4fe6 340# 1 <;> nextstate(main 900 optree_misc.t:334) v:>,<,% ->2
4774ee0a
DM
341# - <@> list vKP ->-
342# 2 <0> padrange[$a:900,902; $b:900,902; $c:901,902; $d:901,902] vM/LVINTRO,4 ->3
343# - <0> padsv[$a:900,902] vM/LVINTRO ->-
344# - <0> padsv[$b:900,902] vM/LVINTRO ->-
e7fd4fe6 345# - <;> nextstate(main 901 optree_misc.t:334) v:>,<,% ->-
4774ee0a
DM
346# - <@> list vKP ->3
347# - <0> pushmark vM/LVINTRO ->-
348# - <0> padsv[$c:901,902] vM/LVINTRO ->-
349# - <0> padsv[$d:901,902] vM/LVINTRO ->-
e7fd4fe6 350# 3 <;> nextstate(main 902 optree_misc.t:334) v:>,<,%,{ ->4
4774ee0a
DM
351# 4 <$> const[IV 1] s ->5
352EOT_EOT
353# 5 <1> leavesub[1 ref] K/REFC,1 ->(end)
354# - <@> lineseq KP ->5
e7fd4fe6 355# 1 <;> nextstate(main 900 optree_misc.t:334) v:>,<,% ->2
4774ee0a
DM
356# - <@> list vKP ->-
357# 2 <0> padrange[$a:900,902; $b:900,902; $c:901,902; $d:901,902] vM/LVINTRO,4 ->3
358# - <0> padsv[$a:900,902] vM/LVINTRO ->-
359# - <0> padsv[$b:900,902] vM/LVINTRO ->-
e7fd4fe6 360# - <;> nextstate(main 901 optree_misc.t:334) v:>,<,% ->-
4774ee0a
DM
361# - <@> list vKP ->3
362# - <0> pushmark vM/LVINTRO ->-
363# - <0> padsv[$c:901,902] vM/LVINTRO ->-
364# - <0> padsv[$d:901,902] vM/LVINTRO ->-
e7fd4fe6 365# 3 <;> nextstate(main 902 optree_misc.t:334) v:>,<,%,{ ->4
4774ee0a
DM
366# 4 <$> const(IV 1) s ->5
367EONT_EONT
368
369
fd3cc9e5
DM
370checkOptree ( name => 'consolidate padranges and singletons',
371 code => sub { my ($a,$b); my $c; my ($d,$e);
372 my @f; my $g; my ($h,$i); my %j; 1 },
373 strip_open_hints => 1,
374 skip => ($] < 5.017006),
375 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
376# 5 <1> leavesub[1 ref] K/REFC,1 ->(end)
377# - <@> lineseq KP ->5
e7fd4fe6 378# 1 <;> nextstate(main 903 optree_misc.t:371) v:>,<,% ->2
fd3cc9e5
DM
379# - <@> list vKP ->-
380# 2 <0> padrange[$a:903,910; $b:903,910; $c:904,910; $d:905,910; $e:905,910; @f:906,910; $g:907,910; $h:908,910; $i:908,910; %j:909,910] vM/LVINTRO,10 ->3
381# - <0> padsv[$a:903,910] vM/LVINTRO ->-
382# - <0> padsv[$b:903,910] vM/LVINTRO ->-
e7fd4fe6 383# - <;> nextstate(main 904 optree_misc.t:371) v:>,<,% ->-
fd3cc9e5 384# - <0> padsv[$c:904,910] vM/LVINTRO ->-
e7fd4fe6 385# - <;> nextstate(main 905 optree_misc.t:371) v:>,<,%,{ ->-
fd3cc9e5
DM
386# - <@> list vKP ->-
387# - <0> pushmark vM/LVINTRO ->-
388# - <0> padsv[$d:905,910] vM/LVINTRO ->-
389# - <0> padsv[$e:905,910] vM/LVINTRO ->-
e7fd4fe6 390# - <;> nextstate(main 906 optree_misc.t:372) v:>,<,%,{ ->-
fd3cc9e5 391# - <0> padav[@f:906,910] vM/LVINTRO ->-
e7fd4fe6 392# - <;> nextstate(main 907 optree_misc.t:372) v:>,<,%,{ ->-
fd3cc9e5 393# - <0> padsv[$g:907,910] vM/LVINTRO ->-
e7fd4fe6 394# - <;> nextstate(main 908 optree_misc.t:372) v:>,<,%,{ ->-
fd3cc9e5
DM
395# - <@> list vKP ->-
396# - <0> pushmark vM/LVINTRO ->-
397# - <0> padsv[$h:908,910] vM/LVINTRO ->-
398# - <0> padsv[$i:908,910] vM/LVINTRO ->-
e7fd4fe6 399# - <;> nextstate(main 909 optree_misc.t:372) v:>,<,%,{ ->-
fd3cc9e5 400# - <0> padhv[%j:909,910] vM/LVINTRO ->3
e7fd4fe6 401# 3 <;> nextstate(main 910 optree_misc.t:372) v:>,<,%,{ ->4
fd3cc9e5
DM
402# 4 <$> const[IV 1] s ->5
403EOT_EOT
404# 5 <1> leavesub[1 ref] K/REFC,1 ->(end)
405# - <@> lineseq KP ->5
e7fd4fe6 406# 1 <;> nextstate(main 903 optree_misc.t:371) v:>,<,% ->2
fd3cc9e5
DM
407# - <@> list vKP ->-
408# 2 <0> padrange[$a:903,910; $b:903,910; $c:904,910; $d:905,910; $e:905,910; @f:906,910; $g:907,910; $h:908,910; $i:908,910; %j:909,910] vM/LVINTRO,10 ->3
409# - <0> padsv[$a:903,910] vM/LVINTRO ->-
410# - <0> padsv[$b:903,910] vM/LVINTRO ->-
e7fd4fe6 411# - <;> nextstate(main 904 optree_misc.t:371) v:>,<,% ->-
fd3cc9e5 412# - <0> padsv[$c:904,910] vM/LVINTRO ->-
e7fd4fe6 413# - <;> nextstate(main 905 optree_misc.t:371) v:>,<,%,{ ->-
fd3cc9e5
DM
414# - <@> list vKP ->-
415# - <0> pushmark vM/LVINTRO ->-
416# - <0> padsv[$d:905,910] vM/LVINTRO ->-
417# - <0> padsv[$e:905,910] vM/LVINTRO ->-
e7fd4fe6 418# - <;> nextstate(main 906 optree_misc.t:372) v:>,<,%,{ ->-
fd3cc9e5 419# - <0> padav[@f:906,910] vM/LVINTRO ->-
e7fd4fe6 420# - <;> nextstate(main 907 optree_misc.t:372) v:>,<,%,{ ->-
fd3cc9e5 421# - <0> padsv[$g:907,910] vM/LVINTRO ->-
e7fd4fe6 422# - <;> nextstate(main 908 optree_misc.t:372) v:>,<,%,{ ->-
fd3cc9e5
DM
423# - <@> list vKP ->-
424# - <0> pushmark vM/LVINTRO ->-
425# - <0> padsv[$h:908,910] vM/LVINTRO ->-
426# - <0> padsv[$i:908,910] vM/LVINTRO ->-
e7fd4fe6 427# - <;> nextstate(main 909 optree_misc.t:372) v:>,<,%,{ ->-
fd3cc9e5 428# - <0> padhv[%j:909,910] vM/LVINTRO ->3
e7fd4fe6 429# 3 <;> nextstate(main 910 optree_misc.t:372) v:>,<,%,{ ->4
fd3cc9e5
DM
430# 4 <$> const(IV 1) s ->5
431EONT_EONT
432
433
2721a2ca
DM
434checkOptree ( name => 'm?x?',
435 code => sub { m?x?; },
436 strip_open_hints => 1,
437 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
438# 3 <1> leavesub[1 ref] K/REFC,1 ->(end)
439# - <@> lineseq KP ->3
64bb98af 440# 1 <;> nextstate(main 914 optree_misc.t:434) v:>,<,%,{ ->2
2721a2ca
DM
441# 2 </> match(/"x"/) /RTIME ->3
442EOT_EOT
443# 3 <1> leavesub[1 ref] K/REFC,1 ->(end)
444# - <@> lineseq KP ->3
64bb98af 445# 1 <;> nextstate(main 914 optree_misc.t:434) v:>,<,%,{ ->2
2721a2ca
DM
446# 2 </> match(/"x"/) /RTIME ->3
447EONT_EONT
448
449
f85f6494 450unlink $tmpfile;