Eviscerate README.macos to match the state of the world
[p5sagit/p5-mst-13.2.git] / ext / B / t / optree_specials.t
1 #!./perl
2
3 # This tests the B:: module(s) with CHECK, BEGIN, END and INIT blocks. The
4 # text excerpts below marked with "# " in front are the expected output. They
5 # are there twice, EOT for threading, and EONT for a non-threading Perl. The
6 # output is matched losely. If the match fails even though the "got" and
7 # "expected" output look exactly the same, then watch for trailing, invisible
8 # spaces.
9
10 BEGIN {
11     unshift @INC, 't';
12     require Config;
13     if (($Config::Config{'extensions'} !~ /\bB\b/) ){
14         print "1..0 # Skip -- Perl configured without B module\n";
15         exit 0;
16     }
17     # require 'test.pl'; # now done by OptreeCheck
18 }
19
20 # import checkOptree(), and %gOpts (containing test state)
21 use OptreeCheck;        # ALSO DOES @ARGV HANDLING !!!!!!
22 use Config;
23
24 plan tests => 7 + ($] > 5.009 ? 1 : 0);
25
26 require_ok("B::Concise");
27
28 my $out = runperl(
29     switches => ["-MO=Concise,BEGIN,CHECK,INIT,END,-exec"],
30     prog => q{$a=$b && print q/foo/},
31     stderr => 1 );
32
33 #print "out:$out\n";
34
35 my $src = q[our ($beg, $chk, $init, $end, $uc) = qq{'foo'}; BEGIN { $beg++ } CHECK { $chk++ } INIT { $init++ } END { $end++ } UNITCHECK {$uc++}];
36
37
38 my @warnings_todo;
39 @warnings_todo = (todo =>
40    "Change 23768 (Remove Carp from warnings.pm) alters expected output, not"
41    . "propagated to 5.8.x")
42     if $] < 5.009;
43
44 checkOptree ( name      => 'BEGIN',
45               bcopts    => 'BEGIN',
46               prog      => $src,
47               @warnings_todo,
48               strip_open_hints => 1,
49               expect    => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
50 # BEGIN 1:
51 # b  <1> leavesub[1 ref] K/REFC,1 ->(end)
52 # -     <@> lineseq KP ->b
53 # 1        <;> nextstate(B::Concise -275 Concise.pm:356) v:*,&,{,$ ->2
54 # 3        <1> require sK/1 ->4
55 # 2           <$> const[PV "strict.pm"] s/BARE ->3
56 # 4        <;> nextstate(B::Concise -275 Concise.pm:356) v:*,&,{,$ ->5
57 # -        <@> lineseq K ->-
58 # 5           <;> nextstate(B::Concise -275 Concise.pm:356) :*,&,{,$ ->6
59 # a           <1> entersub[t1] KS*/TARG,2 ->b
60 # 6              <0> pushmark s ->7
61 # 7              <$> const[PV "strict"] sM ->8
62 # 8              <$> const[PV "refs"] sM ->9
63 # 9              <$> method_named[PV "unimport"] ->a
64 # BEGIN 2:
65 # m  <1> leavesub[1 ref] K/REFC,1 ->(end)
66 # -     <@> lineseq K ->m
67 # c        <;> nextstate(B::Concise -265 Concise.pm:367) v:*,&,$ ->d
68 # e        <1> require sK/1 ->f
69 # d           <$> const[PV "strict.pm"] s/BARE ->e
70 # f        <;> nextstate(B::Concise -265 Concise.pm:367) v:*,&,$ ->g
71 # -        <@> lineseq K ->-
72 # g           <;> nextstate(B::Concise -265 Concise.pm:367) :*,&,$ ->h
73 # l           <1> entersub[t1] KS*/TARG,2 ->m
74 # h              <0> pushmark s ->i
75 # i              <$> const[PV "strict"] sM ->j
76 # j              <$> const[PV "refs"] sM ->k
77 # k              <$> method_named[PV "unimport"] ->l
78 # BEGIN 3:
79 # x  <1> leavesub[1 ref] K/REFC,1 ->(end)
80 # -     <@> lineseq KP ->x
81 # n        <;> nextstate(B::Concise -254 Concise.pm:386) v:*,&,{,$ ->o
82 # p        <1> require sK/1 ->q
83 # o           <$> const[PV "warnings.pm"] s/BARE ->p
84 # q        <;> nextstate(B::Concise -254 Concise.pm:386) v:*,&,{,$ ->r
85 # -        <@> lineseq K ->-
86 # r           <;> nextstate(B::Concise -254 Concise.pm:386) :*,&,{,$ ->s
87 # w           <1> entersub[t1] KS*/TARG,2 ->x
88 # s              <0> pushmark s ->t
89 # t              <$> const[PV "warnings"] sM ->u
90 # u              <$> const[PV "qw"] sM ->v
91 # v              <$> method_named[PV "unimport"] ->w
92 # BEGIN 4:
93 # 11 <1> leavesub[1 ref] K/REFC,1 ->(end)
94 # -     <@> lineseq KP ->11
95 # y        <;> nextstate(main 2 -e:1) v:>,<,%,{ ->z
96 # 10       <1> postinc[t3] sK/1 ->11
97 # -           <1> ex-rv2sv sKRM/1 ->10
98 # z              <#> gvsv[*beg] s ->10
99 EOT_EOT
100 # BEGIN 1:
101 # b  <1> leavesub[1 ref] K/REFC,1 ->(end)
102 # -     <@> lineseq KP ->b
103 # 1        <;> nextstate(B::Concise -275 Concise.pm:356) v:*,&,{,$ ->2
104 # 3        <1> require sK/1 ->4
105 # 2           <$> const(PV "strict.pm") s/BARE ->3
106 # 4        <;> nextstate(B::Concise -275 Concise.pm:356) v:*,&,{,$ ->5
107 # -        <@> lineseq K ->-
108 # 5           <;> nextstate(B::Concise -275 Concise.pm:356) :*,&,{,$ ->6
109 # a           <1> entersub[t1] KS*/TARG,2 ->b
110 # 6              <0> pushmark s ->7
111 # 7              <$> const(PV "strict") sM ->8
112 # 8              <$> const(PV "refs") sM ->9
113 # 9              <$> method_named(PV "unimport") ->a
114 # BEGIN 2:
115 # m  <1> leavesub[1 ref] K/REFC,1 ->(end)
116 # -     <@> lineseq K ->m
117 # c        <;> nextstate(B::Concise -265 Concise.pm:367) v:*,&,$ ->d
118 # e        <1> require sK/1 ->f
119 # d           <$> const(PV "strict.pm") s/BARE ->e
120 # f        <;> nextstate(B::Concise -265 Concise.pm:367) v:*,&,$ ->g
121 # -        <@> lineseq K ->-
122 # g           <;> nextstate(B::Concise -265 Concise.pm:367) :*,&,$ ->h
123 # l           <1> entersub[t1] KS*/TARG,2 ->m
124 # h              <0> pushmark s ->i
125 # i              <$> const(PV "strict") sM ->j
126 # j              <$> const(PV "refs") sM ->k
127 # k              <$> method_named(PV "unimport") ->l
128 # BEGIN 3:
129 # x  <1> leavesub[1 ref] K/REFC,1 ->(end)
130 # -     <@> lineseq KP ->x
131 # n        <;> nextstate(B::Concise -254 Concise.pm:386) v:*,&,{,$ ->o
132 # p        <1> require sK/1 ->q
133 # o           <$> const(PV "warnings.pm") s/BARE ->p
134 # q        <;> nextstate(B::Concise -254 Concise.pm:386) v:*,&,{,$ ->r
135 # -        <@> lineseq K ->-
136 # r           <;> nextstate(B::Concise -254 Concise.pm:386) :*,&,{,$ ->s
137 # w           <1> entersub[t1] KS*/TARG,2 ->x
138 # s              <0> pushmark s ->t
139 # t              <$> const(PV "warnings") sM ->u
140 # u              <$> const(PV "qw") sM ->v
141 # v              <$> method_named(PV "unimport") ->w
142 # BEGIN 4:
143 # 11 <1> leavesub[1 ref] K/REFC,1 ->(end)
144 # -     <@> lineseq KP ->11
145 # y        <;> nextstate(main 2 -e:1) v:>,<,%,{ ->z
146 # 10       <1> postinc[t2] sK/1 ->11
147 # -           <1> ex-rv2sv sKRM/1 ->10
148 # z              <$> gvsv(*beg) s ->10
149 EONT_EONT
150
151
152 checkOptree ( name      => 'END',
153               bcopts    => 'END',
154               prog      => $src,
155               strip_open_hints => 1,
156               expect    => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
157 # END 1:
158 # 4  <1> leavesub[1 ref] K/REFC,1 ->(end)
159 # -     <@> lineseq KP ->4
160 # 1        <;> nextstate(main 5 -e:6) v:>,<,%,{ ->2
161 # 3        <1> postinc[t3] sK/1 ->4
162 # -           <1> ex-rv2sv sKRM/1 ->3
163 # 2              <#> gvsv[*end] s ->3
164 EOT_EOT
165 # END 1:
166 # 4  <1> leavesub[1 ref] K/REFC,1 ->(end)
167 # -     <@> lineseq KP ->4
168 # 1        <;> nextstate(main 5 -e:6) v:>,<,%,{ ->2
169 # 3        <1> postinc[t2] sK/1 ->4
170 # -           <1> ex-rv2sv sKRM/1 ->3
171 # 2              <$> gvsv(*end) s ->3
172 EONT_EONT
173
174
175 checkOptree ( name      => 'CHECK',
176               bcopts    => 'CHECK',
177               prog      => $src,
178               strip_open_hints => 1,
179               expect    => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
180 # CHECK 1:
181 # 4  <1> leavesub[1 ref] K/REFC,1 ->(end)
182 # -     <@> lineseq KP ->4
183 # 1        <;> nextstate(main 3 -e:4) v:>,<,%,{ ->2
184 # 3        <1> postinc[t3] sK/1 ->4
185 # -           <1> ex-rv2sv sKRM/1 ->3
186 # 2              <#> gvsv[*chk] s ->3
187 EOT_EOT
188 # CHECK 1:
189 # 4  <1> leavesub[1 ref] K/REFC,1 ->(end)
190 # -     <@> lineseq KP ->4
191 # 1        <;> nextstate(main 3 -e:4) v:>,<,%,{ ->2
192 # 3        <1> postinc[t2] sK/1 ->4
193 # -           <1> ex-rv2sv sKRM/1 ->3
194 # 2              <$> gvsv(*chk) s ->3
195 EONT_EONT
196
197 if ($] >= 5.009) {
198     checkOptree ( name  => 'UNITCHECK',
199                   bcopts=> 'UNITCHECK',
200                   prog  => $src,
201                   strip_open_hints => 1,
202                   expect=> <<'EOT_EOT', expect_nt => <<'EONT_EONT');
203 # UNITCHECK 1:
204 # 4  <1> leavesub[1 ref] K/REFC,1 ->(end)
205 # -     <@> lineseq KP ->4
206 # 1        <;> nextstate(main 3 -e:4) v:>,<,%,{ ->2
207 # 3        <1> postinc[t3] sK/1 ->4
208 # -           <1> ex-rv2sv sKRM/1 ->3
209 # 2              <#> gvsv[*uc] s ->3
210 EOT_EOT
211 # UNITCHECK 1:
212 # 4  <1> leavesub[1 ref] K/REFC,1 ->(end)
213 # -     <@> lineseq KP ->4
214 # 1        <;> nextstate(main 3 -e:4) v:>,<,%,{ ->2
215 # 3        <1> postinc[t2] sK/1 ->4
216 # -           <1> ex-rv2sv sKRM/1 ->3
217 # 2              <$> gvsv(*uc) s ->3
218 EONT_EONT
219 }
220
221 checkOptree ( name      => 'INIT',
222               bcopts    => 'INIT',
223               #todo     => 'get working',
224               prog      => $src,
225               strip_open_hints => 1,
226               expect    => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
227 # INIT 1:
228 # 4  <1> leavesub[1 ref] K/REFC,1 ->(end)
229 # -     <@> lineseq KP ->4
230 # 1        <;> nextstate(main 4 -e:5) v:>,<,%,{ ->2
231 # 3        <1> postinc[t3] sK/1 ->4
232 # -           <1> ex-rv2sv sKRM/1 ->3
233 # 2              <#> gvsv[*init] s ->3
234 EOT_EOT
235 # INIT 1:
236 # 4  <1> leavesub[1 ref] K/REFC,1 ->(end)
237 # -     <@> lineseq KP ->4
238 # 1        <;> nextstate(main 4 -e:5) v:>,<,%,{ ->2
239 # 3        <1> postinc[t2] sK/1 ->4
240 # -           <1> ex-rv2sv sKRM/1 ->3
241 # 2              <$> gvsv(*init) s ->3
242 EONT_EONT
243
244
245 checkOptree ( name      => 'all of BEGIN END INIT CHECK UNITCHECK -exec',
246               bcopts    => [qw/ BEGIN END INIT CHECK UNITCHECK -exec /],
247               prog      => $src,
248               @warnings_todo,
249               strip_open_hints => 1,
250               expect    => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
251 # BEGIN 1:
252 # 1  <;> nextstate(B::Concise -275 Concise.pm:356) v:*,&,{,$
253 # 2  <$> const[PV "strict.pm"] s/BARE
254 # 3  <1> require sK/1
255 # 4  <;> nextstate(B::Concise -275 Concise.pm:356) v:*,&,{,$
256 # 5  <;> nextstate(B::Concise -275 Concise.pm:356) :*,&,{,$
257 # 6  <0> pushmark s
258 # 7  <$> const[PV "strict"] sM
259 # 8  <$> const[PV "refs"] sM
260 # 9  <$> method_named[PV "unimport"] 
261 # a  <1> entersub[t1] KS*/TARG,2
262 # b  <1> leavesub[1 ref] K/REFC,1
263 # BEGIN 2:
264 # c  <;> nextstate(B::Concise -265 Concise.pm:367) v:*,&,$
265 # d  <$> const[PV "strict.pm"] s/BARE
266 # e  <1> require sK/1
267 # f  <;> nextstate(B::Concise -265 Concise.pm:367) v:*,&,$
268 # g  <;> nextstate(B::Concise -265 Concise.pm:367) :*,&,$
269 # h  <0> pushmark s
270 # i  <$> const[PV "strict"] sM
271 # j  <$> const[PV "refs"] sM
272 # k  <$> method_named[PV "unimport"] 
273 # l  <1> entersub[t1] KS*/TARG,2
274 # m  <1> leavesub[1 ref] K/REFC,1
275 # BEGIN 3:
276 # n  <;> nextstate(B::Concise -254 Concise.pm:386) v:*,&,{,$
277 # o  <$> const[PV "warnings.pm"] s/BARE
278 # p  <1> require sK/1
279 # q  <;> nextstate(B::Concise -254 Concise.pm:386) v:*,&,{,$
280 # r  <;> nextstate(B::Concise -254 Concise.pm:386) :*,&,{,$
281 # s  <0> pushmark s
282 # t  <$> const[PV "warnings"] sM
283 # u  <$> const[PV "qw"] sM
284 # v  <$> method_named[PV "unimport"] 
285 # w  <1> entersub[t1] KS*/TARG,2
286 # x  <1> leavesub[1 ref] K/REFC,1
287 # BEGIN 4:
288 # y  <;> nextstate(main 2 -e:1) v:>,<,%,{
289 # z  <#> gvsv[*beg] s
290 # 10 <1> postinc[t3] sK/1
291 # 11 <1> leavesub[1 ref] K/REFC,1
292 # END 1:
293 # 12 <;> nextstate(main 5 -e:1) v:>,<,%,{
294 # 13 <#> gvsv[*end] s
295 # 14 <1> postinc[t3] sK/1
296 # 15 <1> leavesub[1 ref] K/REFC,1
297 # INIT 1:
298 # 16 <;> nextstate(main 4 -e:1) v:>,<,%,{
299 # 17 <#> gvsv[*init] s
300 # 18 <1> postinc[t3] sK/1
301 # 19 <1> leavesub[1 ref] K/REFC,1
302 # CHECK 1:
303 # 1a <;> nextstate(main 3 -e:1) v:>,<,%,{
304 # 1b <#> gvsv[*chk] s
305 # 1c <1> postinc[t3] sK/1
306 # 1d <1> leavesub[1 ref] K/REFC,1
307 # UNITCHECK 1:
308 # 1e <;> nextstate(main 6 -e:1) v:>,<,%,{
309 # 1f <#> gvsv[*uc] s
310 # 1g <1> postinc[t3] sK/1
311 # 1h <1> leavesub[1 ref] K/REFC,1
312 EOT_EOT
313 # BEGIN 1:
314 # 1  <;> nextstate(B::Concise -275 Concise.pm:356) v:*,&,{,$
315 # 2  <$> const(PV "strict.pm") s/BARE
316 # 3  <1> require sK/1
317 # 4  <;> nextstate(B::Concise -275 Concise.pm:356) v:*,&,{,$
318 # 5  <;> nextstate(B::Concise -275 Concise.pm:356) :*,&,{,$
319 # 6  <0> pushmark s
320 # 7  <$> const(PV "strict") sM
321 # 8  <$> const(PV "refs") sM
322 # 9  <$> method_named(PV "unimport") 
323 # a  <1> entersub[t1] KS*/TARG,2
324 # b  <1> leavesub[1 ref] K/REFC,1
325 # BEGIN 2:
326 # c  <;> nextstate(B::Concise -265 Concise.pm:367) v:*,&,$
327 # d  <$> const(PV "strict.pm") s/BARE
328 # e  <1> require sK/1
329 # f  <;> nextstate(B::Concise -265 Concise.pm:367) v:*,&,$
330 # g  <;> nextstate(B::Concise -265 Concise.pm:367) :*,&,$
331 # h  <0> pushmark s
332 # i  <$> const(PV "strict") sM
333 # j  <$> const(PV "refs") sM
334 # k  <$> method_named(PV "unimport") 
335 # l  <1> entersub[t1] KS*/TARG,2
336 # m  <1> leavesub[1 ref] K/REFC,1
337 # BEGIN 3:
338 # n  <;> nextstate(B::Concise -254 Concise.pm:386) v:*,&,{,$
339 # o  <$> const(PV "warnings.pm") s/BARE
340 # p  <1> require sK/1
341 # q  <;> nextstate(B::Concise -254 Concise.pm:386) v:*,&,{,$
342 # r  <;> nextstate(B::Concise -254 Concise.pm:386) :*,&,{,$
343 # s  <0> pushmark s
344 # t  <$> const(PV "warnings") sM
345 # u  <$> const(PV "qw") sM
346 # v  <$> method_named(PV "unimport") 
347 # w  <1> entersub[t1] KS*/TARG,2
348 # x  <1> leavesub[1 ref] K/REFC,1
349 # BEGIN 4:
350 # y  <;> nextstate(main 2 -e:1) v:>,<,%,{
351 # z  <$> gvsv(*beg) s
352 # 10 <1> postinc[t2] sK/1
353 # 11 <1> leavesub[1 ref] K/REFC,1
354 # END 1:
355 # 12 <;> nextstate(main 5 -e:1) v:>,<,%,{
356 # 13 <$> gvsv(*end) s
357 # 14 <1> postinc[t2] sK/1
358 # 15 <1> leavesub[1 ref] K/REFC,1
359 # INIT 1:
360 # 16 <;> nextstate(main 4 -e:1) v:>,<,%,{
361 # 17 <$> gvsv(*init) s
362 # 18 <1> postinc[t2] sK/1
363 # 19 <1> leavesub[1 ref] K/REFC,1
364 # CHECK 1:
365 # 1a <;> nextstate(main 3 -e:1) v:>,<,%,{
366 # 1b <$> gvsv(*chk) s
367 # 1c <1> postinc[t2] sK/1
368 # 1d <1> leavesub[1 ref] K/REFC,1
369 # UNITCHECK 1:
370 # 1e <;> nextstate(main 6 -e:1) v:>,<,%,{
371 # 1f <$> gvsv(*uc) s
372 # 1g <1> postinc[t2] sK/1
373 # 1h <1> leavesub[1 ref] K/REFC,1
374 EONT_EONT
375
376
377 # perl "-I../lib" -MO=Concise,BEGIN,CHECK,INIT,END,-exec -e '$a=$b && print q/foo/'
378
379
380
381 checkOptree ( name      => 'regression test for patch 25352',
382               bcopts    => [qw/ BEGIN END INIT CHECK -exec /],
383               prog      => 'print q/foo/',
384               @warnings_todo,
385               expect    => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
386 # BEGIN 1:
387 # 1  <;> nextstate(B::Concise -275 Concise.pm:356) v:*,&,{,$
388 # 2  <$> const[PV "strict.pm"] s/BARE
389 # 3  <1> require sK/1
390 # 4  <;> nextstate(B::Concise -275 Concise.pm:356) v:*,&,{,$
391 # 5  <;> nextstate(B::Concise -275 Concise.pm:356) :*,&,{,$
392 # 6  <0> pushmark s
393 # 7  <$> const[PV "strict"] sM
394 # 8  <$> const[PV "refs"] sM
395 # 9  <$> method_named[PV "unimport"] 
396 # a  <1> entersub[t1] KS*/TARG,2
397 # b  <1> leavesub[1 ref] K/REFC,1
398 # BEGIN 2:
399 # c  <;> nextstate(B::Concise -265 Concise.pm:367) v:*,&,$
400 # d  <$> const[PV "strict.pm"] s/BARE
401 # e  <1> require sK/1
402 # f  <;> nextstate(B::Concise -265 Concise.pm:367) v:*,&,$
403 # g  <;> nextstate(B::Concise -265 Concise.pm:367) :*,&,$
404 # h  <0> pushmark s
405 # i  <$> const[PV "strict"] sM
406 # j  <$> const[PV "refs"] sM
407 # k  <$> method_named[PV "unimport"] 
408 # l  <1> entersub[t1] KS*/TARG,2
409 # m  <1> leavesub[1 ref] K/REFC,1
410 # BEGIN 3:
411 # n  <;> nextstate(B::Concise -254 Concise.pm:386) v:*,&,{,$
412 # o  <$> const[PV "warnings.pm"] s/BARE
413 # p  <1> require sK/1
414 # q  <;> nextstate(B::Concise -254 Concise.pm:386) v:*,&,{,$
415 # r  <;> nextstate(B::Concise -254 Concise.pm:386) :*,&,{,$
416 # s  <0> pushmark s
417 # t  <$> const[PV "warnings"] sM
418 # u  <$> const[PV "qw"] sM
419 # v  <$> method_named[PV "unimport"] 
420 # w  <1> entersub[t1] KS*/TARG,2
421 # x  <1> leavesub[1 ref] K/REFC,1
422 EOT_EOT
423 # BEGIN 1:
424 # 1  <;> nextstate(B::Concise -275 Concise.pm:356) v:*,&,{,$
425 # 2  <$> const(PV "strict.pm") s/BARE
426 # 3  <1> require sK/1
427 # 4  <;> nextstate(B::Concise -275 Concise.pm:356) v:*,&,{,$
428 # 5  <;> nextstate(B::Concise -275 Concise.pm:356) :*,&,{,$
429 # 6  <0> pushmark s
430 # 7  <$> const(PV "strict") sM
431 # 8  <$> const(PV "refs") sM
432 # 9  <$> method_named(PV "unimport") 
433 # a  <1> entersub[t1] KS*/TARG,2
434 # b  <1> leavesub[1 ref] K/REFC,1
435 # BEGIN 2:
436 # c  <;> nextstate(B::Concise -265 Concise.pm:367) v:*,&,$
437 # d  <$> const(PV "strict.pm") s/BARE
438 # e  <1> require sK/1
439 # f  <;> nextstate(B::Concise -265 Concise.pm:367) v:*,&,$
440 # g  <;> nextstate(B::Concise -265 Concise.pm:367) :*,&,$
441 # h  <0> pushmark s
442 # i  <$> const(PV "strict") sM
443 # j  <$> const(PV "refs") sM
444 # k  <$> method_named(PV "unimport") 
445 # l  <1> entersub[t1] KS*/TARG,2
446 # m  <1> leavesub[1 ref] K/REFC,1
447 # BEGIN 3:
448 # n  <;> nextstate(B::Concise -254 Concise.pm:386) v:*,&,{,$
449 # o  <$> const(PV "warnings.pm") s/BARE
450 # p  <1> require sK/1
451 # q  <;> nextstate(B::Concise -254 Concise.pm:386) v:*,&,{,$
452 # r  <;> nextstate(B::Concise -254 Concise.pm:386) :*,&,{,$
453 # s  <0> pushmark s
454 # t  <$> const(PV "warnings") sM
455 # u  <$> const(PV "qw") sM
456 # v  <$> method_named(PV "unimport") 
457 # w  <1> entersub[t1] KS*/TARG,2
458 # x  <1> leavesub[1 ref] K/REFC,1
459 EONT_EONT