This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Name lexical constants
authorFather Chrysostomos <sprout@cpan.org>
Sun, 2 Jun 2013 01:39:33 +0000 (18:39 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Sun, 2 Jun 2013 18:54:55 +0000 (11:54 -0700)
commit83a72a15a3e8908c9fea8334e083e9329d425feb
treed655f4fe058c725f8fdc9c811263dbfee22d2abb
parentfe54d63b71ffdc66546e8a06b4ea561f58af2fc2
Name lexical constants

$ ./perl -Ilib -Mfeature=:all -e 'my sub a(){44} a()'
The lexical_subs feature is experimental at -e line 1.
Assertion failed: (hek), function Perl_ck_subr, file op.c, line 10558.
Abort trap: 6

The experimental warning is expected.  The assertion failure is not.

When a call checker is invoked, the name of the subroutine is passed
to it.  op.c:ck_subr gets the name from the CV’s cv (CvGV) or, in the
case of lexical subs, from its name hek (CvNAME_HEK).  If neither
exists, ck_subr cannot cope.

Lexical subs never have a GV pointer.  Lexical constants were acci-
dentally having neither a GV pointer nor a hek.  They should have a
hek, like other lexical subs.
op.c
t/op/lexsub.t