X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Fstrictures.pm;h=a715c60b7184f231ab3f2e79ae890345fca136e7;hb=07dc8b03715dd0cb8236a75d52481e21344e36df;hp=f618f668b8ebf13f154364d8cc8fc24f9531c40c;hpb=1931c77d270438923f75b6e2ff4913a89fc9e83e;p=p5sagit%2Fstrictures.git diff --git a/lib/strictures.pm b/lib/strictures.pm index f618f66..a715c60 100644 --- a/lib/strictures.pm +++ b/lib/strictures.pm @@ -7,18 +7,26 @@ BEGIN { *_PERL_LT_5_8_4 = ($] < 5.008004) ? sub(){1} : sub(){0}; } -our $VERSION = '2.000000'; +our $VERSION = '1.999_001'; $VERSION = eval $VERSION; +$VERSION = 2; # a bit of a cheat, but requesting v2 needs to be possible our @WARNING_CATEGORIES = grep { exists $warnings::Offsets{$_} } qw( closure deprecated exiting experimental + experimental::autoderef + experimental::const_attr experimental::lexical_subs experimental::lexical_topic + experimental::postderef + experimental::re_strict + experimental::refaliasing experimental::regex_sets + experimental::signatures experimental::smartmatch + experimental::win32_perlio glob imprecision io @@ -27,8 +35,11 @@ our @WARNING_CATEGORIES = grep { exists $warnings::Offsets{$_} } qw( layer newline pipe + syscalls unopened + locale misc + missing numeric once overflow @@ -36,6 +47,7 @@ our @WARNING_CATEGORIES = grep { exists $warnings::Offsets{$_} } qw( portable recursion redefine + redundant regexp severe debugging @@ -66,6 +78,7 @@ our @WARNING_CATEGORIES = grep { exists $warnings::Offsets{$_} } qw( nonchar surrogate void + void_unusual y2k ); @@ -144,7 +157,8 @@ sub _enable_2 { strict->import; warnings->import; warnings->import(FATAL => @WARNING_CATEGORIES); - warnings->import(NONFATAL => @V2_NONFATAL); + warnings->unimport(FATAL => @V2_NONFATAL); + warnings->import(@V2_NONFATAL); warnings->unimport(@V2_DISABLE); if (_want_extra($opts->{file})) { @@ -256,25 +270,8 @@ and when either C<.git>, C<.svn>, or C<.hg> is present in the current directory C<.git>, C<.svn>, or C<.hg> is present two directories up along with C (which would indicate we are in a C operation, via L) -- or when the C environment variable is -set, in which case +set, in which case it also does the equivalent of - use strictures 2; - -is equivalent to - - use strict; - use warnings FATAL => 'all'; - use warnings NONFATAL => qw( - exec - recursion - internal - malloc - newline - experimental - deprecated - portable - ); - no warnings 'once'; no indirect 'fatal'; no multidimensional; no bareword::filehandles; @@ -317,6 +314,54 @@ increase (e.g. 1.000000 to 1.001000 (1.1.0) or similar). Any fixes only to the mechanism of this code will result in a sub-version increase (e.g. 1.000000 to 1.000001 (1.0.1)). +=head1 CATEGORY SELECTIONS + +strictures does not enable fatal warnings for all categories. + +=over 4 + +=item exec + +Includes a warning that can cause your program to continue running +unintentionally after an internal fork. Not safe to fatalize. + +=item recursion + +Infinite recursion will end up overflowing the stack eventually anyway. + +=item internal + +Triggers deep within perl, in places that are not safe to trap. + +=item malloc + +Triggers deep within perl, in places that are not safe to trap. + +=item newline + +Includes a warning for using stat on a valid but suspect filename, ending in a +newline. + +=item experimental + +Experimental features are used intentionally. + +=item deprecated + +Deprecations will inherently be added to in the future in unexpected ways, +so making them fatal won't be reliable. + +=item portable + +Doesn't indicate an actual problem with the program, only that it may not +behave properly if run on a different machine. + +=item once + +Can't be fatalized. Also triggers very inconsistently, so we just disable it. + +=back + =head1 VERSIONS Depending on the version of strictures requested, different warnings will be @@ -335,12 +380,26 @@ Equivalent to: use strict; use warnings FATAL => 'all'; - use warnings NONFATAL => 'deprecated', 'experimental'; + use warnings NONFATAL => qw( + exec + recursion + internal + malloc + newline + experimental + deprecated + portable + ); + no warnings 'once'; + # and if in dev mode: no indirect 'fatal'; no multidimensional; no bareword::filehandles; +Additionally, any warnings created by modules using L or +C will not be fatalized. + =head2 VERSION 1 Equivalent to: