From: Vincent Pit Date: Tue, 14 Jul 2009 16:47:04 +0000 (+0200) Subject: This is 0.16 X-Git-Tag: v0.16^0 X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2Findirect.git;a=commitdiff_plain;h=3073451bb3c0e963ca447441f101f00c29f50f03 This is 0.16 --- diff --git a/Changes b/Changes index 5fdbf5e..29ea798 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,14 @@ Revision history for indirect +0.16 2009-07-14 16:50 UTC + + Add : Indirect calls on blocks are now reported. For those, '{' is + passed to the hook as the object description. + + Add : The new indirect::msg() function publicizes the default + warning/exception message. + + Fix : [RT #47866] : Segfault with UTF-8 regexps. + Thanks Andrew Main for reporting. + + Tst : Cleanups. + 0.15 2009-07-08 22:55 UTC + Fix : Invalid constructs with the same method and package name were not reported. diff --git a/META.yml b/META.yml index d41974a..3fec87e 100644 --- a/META.yml +++ b/META.yml @@ -1,6 +1,6 @@ --- #YAML:1.0 name: indirect -version: 0.15 +version: 0.16 abstract: Lexically warn about using the indirect object syntax. author: - Vincent Pit diff --git a/README b/README index efc7130..f362c9f 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ NAME indirect - Lexically warn about using the indirect object syntax. VERSION - Version 0.15 + Version 0.16 SYNOPSIS # In a script @@ -16,6 +16,8 @@ SYNOPSIS 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 @@ -34,10 +36,9 @@ DESCRIPTION its use is error prone (when "swoosh" isn't defined, "swoosh $x" actually compiles to "$x->swoosh"). - It currently does not warn when the object is enclosed between braces - (like "meth { $obj } @args") or for core functions ("print" or "say"). - This may change in the future, or may be added as optional features that - would be enabled by passing options to "unimport". + It currently does not warn for core functions ("print", "say", "exec" or + "system"). This may change in the future, or may be added as optional + features that would be enabled by passing options to "unimport". This module is not a source filter. @@ -50,19 +51,35 @@ METHODS indirect syntax met. * If the key/value pair "hook => $hook" comes first, $hook will be - called for each error with the object name as $_[0], the method name - as $_[1], the current file as $_[2] and the line number as $_[3]. + called for each error with a string representation of the object as + $_[0], the method name as $_[1], the current file as $_[2] and the + line number as $_[3]. If and only if the object is actually a block, + $_[0] is assured to start by '{'. * Otherwise, a warning will be emitted for each indirect construct. "import" Magically called at each "use indirect". Turns the module off. +FUNCTIONS + "msg $object, $method, $file, $line" + Returns the default error message generated by "indirect" when an + invalid construct is reported. + CONSTANTS "I_THREADSAFE" True iff the module could have been built with thread-safety features enabled. +DIAGNOSTICS + "Indirect call of method "%s" on object "%s" at %s line %d." + The default warning/exception message thrown when an indirect call on an + object is found. + + "Indirect call of method "%s" on a block at %s line %d." + The default warning/exception message thrown when an indirect call on a + block is found. + CAVEATS The implementation was tweaked to work around several limitations of vanilla "perl" pragmas : it's thread safe, and doesn't suffer from a @@ -105,6 +122,9 @@ SUPPORT ACKNOWLEDGEMENTS Bram, for motivation and advices. + Andrew Main and Florian Ragwitz, for testing on real-life code and + reporting issues. + COPYRIGHT & LICENSE Copyright 2008-2009 Vincent Pit, all rights reserved. diff --git a/lib/indirect.pm b/lib/indirect.pm index f793a83..734896a 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