Fix idiocy that snuck in bdbd2ae8a - I only want fatal undefs
Peter Rabbitson [Fri, 24 Oct 2014 21:53:52 +0000 (23:53 +0200)]
Not sure what I was thinking. In either case - remove the unsafe code, and
annotate the remaining uses of FATAL => 'all'

(cherry pick of 9f7d5590)

lib/DBIx/Class/CDBICompat/Pager.pm
lib/DBIx/Class/CDBICompat/Retrieve.pm
lib/DBIx/Class/ResultSource/RowParser/Util.pm
t/resultset/rowparser_internals.t

index 36fbce9..203b598 100644 (file)
@@ -2,6 +2,10 @@ package # hide from PAUSE
     DBIx::Class::CDBICompat::Pager;
 
 use strict;
+
+# even though fatalization has been proven over and over to be a universally
+# bad idea, this line has been part of the code from the beginning
+# leaving the compat layer as-is, something may in fact depend on that
 use warnings FATAL => 'all';
 
 *pager = \&page;
index 34be5f3..87f5318 100644 (file)
@@ -2,8 +2,11 @@ package # hide from PAUSE
     DBIx::Class::CDBICompat::Retrieve;
 
 use strict;
-use warnings FATAL => 'all';
 
+# even though fatalization has been proven over and over to be a universally
+# bad idea, this line has been part of the code from the beginning
+# leaving the compat layer as-is, something may in fact depend on that
+use warnings FATAL => 'all';
 
 sub retrieve {
   my $self = shift;
index 3cf4aee..732bb50 100644 (file)
@@ -18,6 +18,10 @@ our @EXPORT_OK = qw(
 # working title - we are hoping to extract this eventually...
 our $null_branch_class = 'DBIx::ResultParser::RelatedNullBranch';
 
+sub __wrap_in_strictured_scope {
+  "  { use strict; use warnings; use warnings FATAL => 'uninitialized';\n$_[0]\n  }"
+}
+
 sub assemble_simple_parser {
   #my ($args) = @_;
 
@@ -35,7 +39,7 @@ sub assemble_simple_parser {
   # change the quoted placeholders to unquoted alias-references
   $parser_src =~ s/ \' \xFF__VALPOS__(\d+)__\xFF \' /"\$_->[$1]"/gex;
 
-  $parser_src = "  { use strict; use warnings FATAL => 'all';\n$parser_src\n  }";
+  __wrap_in_strictured_scope($parser_src);
 }
 
 # the simple non-collapsing nested structure recursor
@@ -218,7 +222,7 @@ EOS
     $no_rowid_container ? "\$cur_row_data->[$1]" : "\$cur_row_ids{$1}"
   /gex;
 
-  $parser_src = "  { use strict; use warnings FATAL => 'all';\n$parser_src\n  }";
+  __wrap_in_strictured_scope($parser_src);
 }
 
 
index 2377185..d1b4f07 100644 (file)
@@ -765,7 +765,7 @@ sub is_same_src { SKIP: {
 
   $expect =~ s/__NBC__/perlstring($DBIx::Class::ResultSource::RowParser::Util::null_branch_class)/ge;
 
-  $expect = "  { use strict; use warnings FATAL => 'all';\n$expect\n  }";
+  $expect = "  { use strict; use warnings FATAL => 'uninitialized';\n$expect\n  }";
 
   my @normalized = map {
     my $cref = eval "sub { $_ }" or do {