summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2004-08-11 06:19:55 +0000
committerPascal Rigaux <pixel@mandriva.com>2004-08-11 06:19:55 +0000
commit6fca507b8021dc55e3d3402ad43cd872537100e8 (patch)
tree74487de75efd5a8e9d3dbf1d2bce7c4156ca7383
parent578a3829921089219cbd0820ef66ca717edab598 (diff)
downloadperl-MDK-Common-6fca507b8021dc55e3d3402ad43cd872537100e8.tar
perl-MDK-Common-6fca507b8021dc55e3d3402ad43cd872537100e8.tar.gz
perl-MDK-Common-6fca507b8021dc55e3d3402ad43cd872537100e8.tar.bz2
perl-MDK-Common-6fca507b8021dc55e3d3402ad43cd872537100e8.tar.xz
perl-MDK-Common-6fca507b8021dc55e3d3402ad43cd872537100e8.zip
"$a[@a] = ..." is better written "push @a, ..."
-rw-r--r--perl_checker.src/parser_helper.ml4
-rw-r--r--perl_checker.src/test/suggest_better.t2
2 files changed, 6 insertions, 0 deletions
diff --git a/perl_checker.src/parser_helper.ml b/perl_checker.src/parser_helper.ml
index 727f956..42e14a9 100644
--- a/perl_checker.src/parser_helper.ml
+++ b/perl_checker.src/parser_helper.ml
@@ -683,6 +683,10 @@ let cook_call_op op para pos =
if Info.is_on_same_line_current pos then warn pos "no need to initialize variables, it's done by default" ;
call
+ | "=", [ Deref_with(I_array, I_scalar, id, Deref(I_array, id_)); _ ] when is_same_fromparser id id_ ->
+ warn_rule "\"$a[@a] = ...\" is better written \"push @a, ...\"" ;
+ call
+
| "=", [ Deref(I_star, String ([(sf1, List [])], _)); _ ] ->
warn_rule (sprintf "write *{'%s'} instead of *{\"%s\"}" sf1 sf1) ;
call
diff --git a/perl_checker.src/test/suggest_better.t b/perl_checker.src/test/suggest_better.t
index caa3677..247fe6c 100644
--- a/perl_checker.src/test/suggest_better.t
+++ b/perl_checker.src/test/suggest_better.t
@@ -56,6 +56,8 @@ $l[$#l] you can replace $#l with -1
$#l == 0 $#x == 0 is better written @x == 1
+$l[@l] = 1 "$a[@a] = ..." is better written "push @a, ..."
+
xxx(@_) replace xxx(@_) with &xxx
member($xxx, keys %h) you can replace "member($xxx, keys %yyy)" with "exists $yyy{$xxx}"