Fix element guessing. urg.
Shawn M Moore [Tue, 28 Apr 2009 08:08:12 +0000 (04:08 -0400)]
lib/Perl/Critic/Policy/DynamicMoose.pm

index 6b0f64d..c0c9036 100644 (file)
@@ -4,21 +4,27 @@ use MooseX::NonMoose;
 extends 'Perl::Critic::DynamicPolicy';
 
 has document => (
-    is  => 'rw',
-    isa => 'PPI::Document',
+    is      => 'rw',
+    isa     => 'PPI::Document',
+    handles => [qw/ppi_document/],
 );
 
 sub applies_to { 'PPI::Document' }
 sub applies_to_metaclass { 'Class::MOP::Class' }
 
 around violation => sub {
-    my $orig = shift;
-    my $self = shift;
-    my $desc = shift;
-    my $expl = shift;
-    my $doc  = shift || $self->document;
+    my $orig    = shift;
+    my $self    = shift;
+    my $desc    = shift;
+    my $expl    = shift;
+    my $element = shift;
+
+    if (!$element) {
+        my $doc = $self->ppi_document;
+        $element = $doc->find('PPI::Element')->[0];
+    }
 
-    return $self->$orig($desc, $expl, $doc, @_);
+    return $self->$orig($desc, $expl, $element, @_);
 };
 
 sub violates_dynamic {