Login
The Perl::Critic::Document method
authorTom Wyant <harryfmudd@comcast.net>
Tue, 7 Aug 2012 22:36:00 +0000 (22:36 +0000)
committerTom Wyant <harryfmudd@comcast.net>
Tue, 7 Aug 2012 22:36:00 +0000 (22:36 +0000)
commitfb7e6d8a4f864efa6278eb37c5d44da46d27ba8d
tree08041f2295c72cce444b0b068b235cc96a5bd628
parentd1c10476c105ae9e628c7f9118a78560e1637210
The Perl::Critic::Document method
element_is_in_lexical_scope_after_statement_containing() goes into an
infinite loop if the parent of the second element does not define a
scope.

The only core policies that use this (so far!) are RegularExpressions
policies that are trying to determine if there are any default
modifiers, so this has not bitten us yet.

I discovered this when trying to revive the
Variables::ProhibitUnusedVariables work that has been languishing in
http://perlcritic.tigris.org/svn/perlcritic/branches/rt64929. The
original work used a Perl::Critic::Scope object to represent the scope,
but this turned out to be overkill, so it was not used in the regexp
default modifier work. The discovery was made because,
while
    ( use re '/smx'; )
is invalid Perl,
    open ( my $handle, $mode, $name );
is perfectly valid -- and more to the point it appears in
ProhibitUnusedVariables.run in the branch.

I have NOT put this into the Changes file, because I could not figure
out what to write.
lib/Perl/Critic/Document.pm