use different mechanism for disabling some warnings
[p5sagit/strictures.git] / lib / strictures.pm
index 43a6600..1a96fcc 100644 (file)
@@ -15,9 +15,12 @@ our @WARNING_CATEGORIES = grep { exists $warnings::Offsets{$_} } qw(
   deprecated
   exiting
   experimental
+    experimental::autoderef
     experimental::lexical_subs
     experimental::lexical_topic
+    experimental::postderef
     experimental::regex_sets
+    experimental::signatures
     experimental::smartmatch
   glob
   imprecision
@@ -27,6 +30,7 @@ our @WARNING_CATEGORIES = grep { exists $warnings::Offsets{$_} } qw(
     layer
     newline
     pipe
+    syscalls
     unopened
   misc
   numeric
@@ -125,18 +129,18 @@ sub _enable_1 {
   }
 }
 
-our @V2_NONFATAL = grep { exists $warnings::Offsets{$_} } qw(
-  exec
-  recursion
-  internal
-  malloc
-  newline
-  experimental
-  deprecated
-  portable
+our @V2_NONFATAL = grep { exists $warnings::Offsets{$_} } (
+  'exec',         # not safe to catch
+  'recursion',    # will be caught by other mechanisms
+  'internal',     # not safe to catch
+  'malloc',       # not safe to catch
+  'newline',      # stat on nonexistent file with a newline in it
+  'experimental', # no reason for these to be fatal
+  'deprecated',   # unfortunately can't make these fatal
+  'portable',     # everything worked fine here, just may not elsewhere
 );
-our @V2_DISABLE = grep { exists $warnings::Offsets{$_} } qw(
-  once
+our @V2_DISABLE = grep { exists $warnings::Offsets{$_} } (
+  'once'          # triggers inconsistently, can't be fatalized
 );
 
 sub _enable_2 {
@@ -144,7 +148,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})) {