X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2Findirect.pm;h=6e99ebaf06b7ae490e2911b884edf7894bfa8b5a;hb=94aa495eddd4c48c51cebabae453a4b3ce7c0ab2;hp=af8d4f7a8c71efaacbbc40e5ee60ae42fed3be68;hpb=ff16be2f69592b80dfcbc397b37dd4ea070b9d62;p=perl%2Fmodules%2Findirect.git diff --git a/lib/indirect.pm b/lib/indirect.pm index af8d4f7..6e99eba 100644 --- a/lib/indirect.pm +++ b/lib/indirect.pm @@ -11,13 +11,13 @@ indirect - Lexically warn about using the indirect object syntax. =head1 VERSION -Version 0.15 +Version 0.16 =cut our $VERSION; BEGIN { - $VERSION = '0.15'; + $VERSION = '0.16'; } =head1 SYNOPSIS @@ -33,6 +33,8 @@ BEGIN { my $z = new Pineapple 'fresh'; # croaks 'You really wanted Pineapple->new at blurp.pm:13' } } + try { ... }; # warns + no indirect ':fatal'; if (defied $foo) { ... } # croaks, note the typo @@ -76,7 +78,8 @@ If it's the string C<':fatal'>, the compilation will croak on the first indirect =item * -If the key/value pair C<< hook => $hook >> comes first, C<$hook> will be called for each error with the object name as C<$_[0]>, the method name as C<$_[1]>, the current file as C<$_[2]> and the line number as C<$_[3]>. +If the key/value pair C<< hook => $hook >> comes first, C<$hook> will be called for each error with a string representation of the object as C<$_[0]>, the method name as C<$_[1]>, the current file as C<$_[2]> and the line number as C<$_[3]>. +If and only if the object is actually a block, C<$_[0]> is assured to start by C<'{'>. =item * @@ -140,6 +143,16 @@ sub msg { True iff the module could have been built with thread-safety features enabled. +=head1 DIAGNOSTICS + +=head2 C + +The default warning/exception message thrown when an indirect call on an object is found. + +=head2 C + +The default warning/exception message thrown when an indirect call on a block is found. + =head1 CAVEATS The implementation was tweaked to work around several limitations of vanilla C pragmas : it's thread safe, and doesn't suffer from a C bug that causes all pragmas to propagate into Cd scopes. @@ -149,6 +162,9 @@ C (no semicolon) at the end of a file won't be seen as an indirect ob With 5.8 perls, the pragma does not propagate into C. This is due to a shortcoming in the way perl handles the hints hash, which is addressed in perl 5.10. +The search for indirect method calls happens before constant folding. +Hence C will be caught. + =head1 DEPENDENCIES L 5.8. @@ -178,6 +194,8 @@ Tests code coverage report is available at L