]> git.vpit.fr Git - perl/modules/Perl-Critic-Policy-Dynamic-NoIndirect.git/commitdiff
Disable strict and warnings when evaluating the code
authorVincent Pit <vince@profvince.com>
Tue, 7 Sep 2010 14:51:33 +0000 (16:51 +0200)
committerVincent Pit <vince@profvince.com>
Tue, 7 Sep 2010 14:51:33 +0000 (16:51 +0200)
Also don't wrap the code inside a real block, as this changes the behaviour
of last and redo.

lib/Perl/Critic/Policy/Dynamic/NoIndirect.pm
t/10-basic.t

index 3528d0b0718852e29f815a9dadf4b7f1f7781eb0..068ab88d1ff81018234934d13bea9d2f80c71c54 100644 (file)
@@ -58,24 +58,25 @@ sub violates_dynamic {
 
  my @errs;
  my $wrapper = <<" WRAPPER";
- {
   return;
   package main;
-  no indirect hook => sub { push \@errs, [ \@_ ] };
-  {
-   ;
+  my \$hook;
+  BEGIN { \$hook = sub { push \@errs, [ \@_ ] } }
+  no strict;
+  no warnings;
+  no indirect hook => \$hook;
+  do {
 #line 1 "$file"
    $src
   }
- }
  WRAPPER
 
  {
   local ($@, *_);
   eval $wrapper; ## no critic
-  if ($@) {
+  if (my $err = $@) {
    require Carp;
-   Carp::confess("Couldn't compile the source wrapper: $@");
+   Carp::croak("Couldn't compile the source wrapper: $err");
   }
  }
 
index 314f4f576288d2873a4618c841baeeab665c17be..146c6a1390330f262f09457ef33f89b0ffc7c3d5 100644 (file)
@@ -5,8 +5,8 @@ use warnings;
 
 my ($tests, $reports, $subtests);
 BEGIN {
- $tests    = 27;
- $reports  = 42;
+ $tests    = 28;
+ $reports  = 43;
  $subtests = 3;
 }
 
@@ -213,3 +213,7 @@ our $obj;
 my $x = meh { new $obj } new X;
 ----
 [ 'meh', '{', 2, 9 ], [ 'new', '$obj', 2, 15 ], [ 'new', 'X', 2, 26 ]
+####
+my $x = $invalid_global_when_strict_is_on; new X;
+----
+[ 'new', 'X', 1, 44 ]