This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[perl #113712] Don’t create stubs after errors
authorFather Chrysostomos <sprout@cpan.org>
Wed, 20 Jun 2012 20:45:43 +0000 (13:45 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Wed, 20 Jun 2012 20:49:56 +0000 (13:49 -0700)
commita73ef99b394ac4c717d671b78792af7d844bbee1
treedc32a37a4363cb3a3fd2b100a31a8002e953f068
parentda5d8dbb2a9d5e72cf3c00308eca40227bad480e
[perl #113712] Don’t create stubs after errors

perl5.002beta3 (c07a80fdfe) stopped bodies of subrou-
tines from being defined after compilation errors, as in
eval "@a =~ s///; sub { die }".

But, instead of making the sub declaration not happen at all, it ended
up leaving a stub.

For a full sub declaration (body and all) to create a stub just
seems wrong.

Likewise, it would be weird if a stub declaration
after a compilation error created a stub, because then
eval "@a =~ s///; sub foo; sub bar { }" would create foo but not bar.

Similarly, a compilation error will cause ‘sub foo {}’ no suppress
‘used once’ warnings; but a lexing error won’t.

This commit fixes all this, making things consistent:  If there is a
compilation, parsing or lexing error, any kind of sub declaration that
follows is ignored.
op.c
t/comp/parser.t
t/lib/warnings/perl