This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Deparse formats in the right spot
authorFather Chrysostomos <sprout@cpan.org>
Sat, 6 Dec 2014 05:41:30 +0000 (21:41 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Sat, 6 Dec 2014 13:33:30 +0000 (05:33 -0800)
commit8b9fb2f9f022bfdeca1048b3797b844142826a9c
tree7fe0dc68f79b792f3e4f9a136ae2080a7f6c8128
parent6436970cde5c8aac6df90c1710576d85946042e4
Deparse formats in the right spot

Formats need the same logic applied in 34b54951568, to avoid this:

Input:

{
    my $x;
    format STDOUT =
@
$x
.
}
__END__

$ pbpaste|./perl -Ilib -MO=Deparse
{
    my $x;
}
format STDOUT =
@
$x
.
__DATA__
- syntax OK

That $x in the format is now global, not lexical.

Also, we need to make sure the sequence numbers are correct.  The
statement after the format stopped having a higher sequence number
than CvOUTSIDE_SEQ(format) in 8635e3c238f, because the ‘pending’
sequence number set aside for the nextstate op created just after com-
pile-time block exit (which nextstate op comes before the block) was
not actually being used by newFORM (unlike newATTRSUB), so the follow-
ing statement was using that number.
lib/B/Deparse.t
op.c
perly.act
perly.h
perly.tab
perly.y