isa => 'PPI::Document',
);
+sub applies_to { 'PPI::Document' }
sub applies_to_metaclass { 'Class::MOP::Class' }
around violation => sub {
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);
}
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 {
@{ $doc->find('PPI::Statement::Package') || [] };
}
-__PACKAGE__->meta->make_immutable;
no Moose;
1;