In perl.git, the branch smoke-me/jkeenan/119251-prototype has been created
<http://perl5.git.perl.org/perl.git/commitdiff/be7ed5ab1662dc9646abc62db00f35bf7941446c?hp=0000000000000000000000000000000000000000>
at be7ed5ab1662dc9646abc62db00f35bf7941446c (commit)
- Log -----------------------------------------------------------------
commit be7ed5ab1662dc9646abc62db00f35bf7941446c
Author: Peter Martini <[email protected]>
Date: Tue Oct 1 01:42:16 2013 -0400
Handle the prototype attribute during sub creation
[perl #119251] Handle the prototype attribute during sub creation
This is necessary so that the prototype attribute can
serve as a drop-in replacement for an actual prototype.
The attribute is shifted out of the attribute list before
the attributes handler is ever called, and before the interpreter
starts to handle the prototype. This necessitates a new warning,
since declaring a prototype and the prototype attribute at the
same time leads to the attribute replacing the traditional
declaration in all senses that matter.
M MANIFEST
M embed.fnc
M embed.h
M op.c
M pod/perldiag.pod
M pod/perlsub.pod
M proto.h
A t/op/attrproto.t
commit a6e466baf859f24020f9772b9ae4186bf9267c97
Author: Peter Martini <[email protected]>
Date: Tue Sep 17 01:37:07 2013 -0400
Add a prototype attribute to attributes.xs
This is not a complete solution, since the check for a
prototype changing only works here if the prototype was
loaded by a direct call to the attributes import method;
if it was added in the normal manner, something like
sub foo :prototype($$) {}
will report a false positive, since the attribute is called
*after* foo has been properly created and with no prototype.
The only way for sub foo : prototype($$) {} to both check for
a redefinition but not give false positives is for it to be done
in newATTRSUB.
M ext/attributes/attributes.pm
M ext/attributes/attributes.xs
-----------------------------------------------------------------------
--
Perl5 Master Repository