Login
CodeLayout::ProhibitQuotedWordLists also now applies to the
authorJeffrey Ryan Thalhammer <jeff@imaginative-software.com>
Sun, 27 Jul 2008 06:14:55 +0000 (06:14 +0000)
committerJeffrey Ryan Thalhammer <jeff@imaginative-software.com>
Sun, 27 Jul 2008 06:14:55 +0000 (06:14 +0000)
import arguments of a C<use> statement.  RT #24467.

I also cleaned up some of the tests for this Policy.

Disabled RequireConstantOnLeftSideOfEquality until I decide
which distro to put that policy in.

Changes
lib/Perl/Critic/Policy/CodeLayout/ProhibitQuotedWordLists.pm
t/CodeLayout/ProhibitQuotedWordLists.run
xt/author/40_perlcriticrc-code
xt/author/42_perlcriticrc-tests

diff --git a/Changes b/Changes
index 721d50c..5d356c6 100644 (file)
--- a/Changes
+++ b/Changes
@@ -8,6 +8,8 @@
     * CodeLayout::ProhibitQuotedWordLists no longer applies if the
       list contains any non-words.  A non-word is anything that
       does not match /[\w-]+/.  RT #37886.
+    * CodeLayout::ProhibitQuotedWordLists also now applies to the
+      import arguments of a C<use> statement.  RT #24467.
 
 [1.090] Released on 2008-07-22
 
index 92ac618..db1bc64 100644 (file)
@@ -12,7 +12,7 @@ use strict;
 use warnings;
 use Readonly;
 
-use Perl::Critic::Utils qw{ :characters :severities };
+use Perl::Critic::Utils qw{ :characters :severities :classification};
 use base 'Perl::Critic::Policy';
 
 our $VERSION = '1.090';
@@ -48,8 +48,10 @@ sub violates {
     # Don't worry about subroutine calls
     my $sib = $elem->sprevious_sibling();
     return if !$sib;
-    return if $sib->isa('PPI::Token::Word');
+
     return if $sib->isa('PPI::Token::Symbol');
+    return if $sib->isa('PPI::Token::Operator') && $sib eq '->';
+    return if $sib->isa('PPI::Token::Word') && !is_included_module_name($sib);
 
     # Get the list elements
     my $expr = $elem->schild(0);
@@ -111,6 +113,8 @@ easy to add to the list in the future.
     @list = ('foo', 'bar', 'baz');  #not ok
     @list = qw(foo bar baz);        #ok
 
+    use Foo ('foo', 'bar', 'baz');  #not ok
+    use Foo qw(foo bar baz);        #ok
 
 =head1 CONFIGURATION
 
index 8df31ac..28eb2a9 100644 (file)
@@ -36,7 +36,9 @@
 @list = (foo => 'bar');
 %hash = ('foo' => 'bar', 'fo' => 'fum');
 my_function('foo', 'bar', 'fudge');
+&my_function('foo', 'bar', 'fudge');
 $an_object->a_method('foo', 'bar', 'fudge');
+$a_sub_routine_ref->('foo', 'bar', 'fudge');
 foreach ('foo', 'bar', 'nuts'){ do_something($_) }
 
 #-----------------------------------------------------------------------------
@@ -58,6 +60,20 @@ foreach ('foo', 'bar', 'nuts'){ do_something($_) }
 @list = ('foo', 'bar', 'baz', 'nuts');
 
 #-----------------------------------------------------------------------------
+## name Failing 'use' statements
+## failures 1
+## cut
+
+use Foo ('foo', 'bar', 'baz');
+
+#-----------------------------------------------------------------------------
+## name Passing 'use' statements
+## failures 0
+## cut
+
+use Foo ();
+use Foo ('foo', 1, 'bar', '1/2');
+use Foo ('foo' => 'bar', 'baz' => 'nuts');
 
 ##############################################################################
 #      $URL$
index d7bb54f..fe70042 100644 (file)
@@ -35,3 +35,7 @@ allow_all_brackets = 1
 
 [RegularExpressions::RequireBracesForMultiline]
 allow_all_brackets = 1
+
+#Might move this to P::C::More
+[-ValuesAndExpressions::RequireConstantOnLeftSideOfEquality]
+
index ee272ab..6d5c8f6 100644 (file)
@@ -52,3 +52,7 @@ allow_all_brackets = 1
 
 # Too endemic for me to deal with right now
 [-ValuesAndExpressions::ProhibitMagicNumbers]
+
+# Might move this to P::C::More
+[-ValuesAndExpressions::RequireConstantOnLeftSideOfEquality]
+