Do not make immutable :(
[gitmo/Perl-Critic-Dynamic-Moose.git] / lib / Perl / Critic / Policy / Dynamic / Moose.pm
index 2e9dcf1..5d5aad3 100644 (file)
@@ -8,6 +8,7 @@ has document => (
     isa => 'PPI::Document',
 );
 
+sub applies_to { 'PPI::Document' }
 sub applies_to_metaclass { 'Class::MOP::Class' }
 
 around violation => sub {
@@ -31,8 +32,11 @@ sub violates_dynamic {
 
     my @violations;
     for my $package (@packages) {
-        my $meta = Class::MOP::class_of($package);
-        next unless grep { $meta->isa($_) } $self->applies_to_metaclass;
+        my $meta = Class::MOP::class_of($package)
+            or next;
+
+        grep { $meta->isa($_) } $self->applies_to_metaclass
+            or next;
 
         push @violations, $self->violates_metaclass($meta, $doc);
     }
@@ -44,7 +48,11 @@ sub compile_document {
     my $self = shift;
     my $doc = $self->document;
 
-    eval "$doc";
+    my $source_code = $doc->content;
+
+    eval $source_code;
+
+    die "Unable to execute " . $doc->filename . ": $@" if $@;
 }
 
 sub find_packages {
@@ -55,7 +63,6 @@ sub find_packages {
            @{ $doc->find('PPI::Statement::Package') || [] };
 }
 
-__PACKAGE__->meta->make_immutable;
 no Moose;
 
 1;