summaryrefslogtreecommitdiffstats
path: root/perl_checker.src
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2003-04-15 21:20:00 +0000
committerPascal Rigaux <pixel@mandriva.com>2003-04-15 21:20:00 +0000
commit293167fe02578bfc2d12e9b26ff0e5ca6e205dbe (patch)
treebabdbe387c903a9e9a179f61935d601746a5a4b0 /perl_checker.src
parentb11cd56179401e20be410ebf6a0e86a12322bed7 (diff)
downloadperl-MDK-Common-293167fe02578bfc2d12e9b26ff0e5ca6e205dbe.tar
perl-MDK-Common-293167fe02578bfc2d12e9b26ff0e5ca6e205dbe.tar.gz
perl-MDK-Common-293167fe02578bfc2d12e9b26ff0e5ca6e205dbe.tar.bz2
perl-MDK-Common-293167fe02578bfc2d12e9b26ff0e5ca6e205dbe.tar.xz
perl-MDK-Common-293167fe02578bfc2d12e9b26ff0e5ca6e205dbe.zip
forbid "unless (...) { ... } else { ... }" and "unless (...) { ... } elsif (...) { ... }
Diffstat (limited to 'perl_checker.src')
-rw-r--r--perl_checker.src/parser.mly2
-rw-r--r--perl_checker.src/parser_helper.ml4
-rw-r--r--perl_checker.src/parser_helper.mli2
3 files changed, 7 insertions, 1 deletions
diff --git a/perl_checker.src/parser.mly b/perl_checker.src/parser.mly
index f578f4d..0b27e80 100644
--- a/perl_checker.src/parser.mly
+++ b/perl_checker.src/parser.mly
@@ -117,7 +117,7 @@ line:
if_then_else: /* Real conditional expressions */
| IF PAREN expr PAREN_END BRACKET lines BRACKET_END elsif else_ {sp_p($1); sp_n($2); sp_0($3); sp_0_or_cr($4); sp_p($5); mcontext_check M_scalar $3; check_block_sub $6 $7; to_Call_op (if $9.any = [] then M_none else mcontext_lmerge ($6.mcontext :: mcontext_lmaybe $8 @ [$9.mcontext])) "if" (prio_lo P_loose $3 :: Block $6.any :: $8.any @ $9.any) $1 $9}
-| UNLESS PAREN expr PAREN_END BRACKET lines BRACKET_END elsif else_ {sp_p($1); sp_n($2); sp_0($3); sp_0_or_cr($4); sp_p($5); mcontext_check M_scalar $3; check_block_sub $6 $7; to_Call_op M_none "unless" (prio_lo P_loose $3 :: Block $6.any :: $8.any @ $9.any) $1 $9}
+| UNLESS PAREN expr PAREN_END BRACKET lines BRACKET_END elsif else_ {sp_p($1); sp_n($2); sp_0($3); sp_0_or_cr($4); sp_p($5); mcontext_check M_scalar $3; check_block_sub $6 $7; check_unless_else $8 $9; to_Call_op M_none "unless" (prio_lo P_loose $3 :: Block $6.any :: $8.any @ $9.any) $1 $9}
elsif:
| {default_esp []}
diff --git a/perl_checker.src/parser_helper.ml b/perl_checker.src/parser_helper.ml
index d4c5842..0092a9f 100644
--- a/perl_checker.src/parser_helper.ml
+++ b/perl_checker.src/parser_helper.ml
@@ -466,6 +466,10 @@ let check_block_ref esp_lines esp_BRACKET_END =
if esp_BRACKET_END.spaces <> Space_cr then
(if l <> [] && last l = Semi_colon then warn_verb (get_pos_end esp_lines) "spurious \";\" before closing block")
+let check_unless_else elsif else_ =
+ if elsif.any <> [] then warn elsif.pos "don't use \"elsif\" with \"unless\" (replace \"unless\" with \"if\")";
+ if else_.any <> [] then warn else_.pos "don't use \"else\" with \"unless\" (replace \"unless\" with \"if\")"
+
let check_my_our_paren { any = ((comma_closed, _), _) } =
if not comma_closed then die_rule "syntax error"
diff --git a/perl_checker.src/parser_helper.mli b/perl_checker.src/parser_helper.mli
index 9334d58..03d9af9 100644
--- a/perl_checker.src/parser_helper.mli
+++ b/perl_checker.src/parser_helper.mli
@@ -121,6 +121,8 @@ val check_block_sub :
val check_block_ref :
Types.fromparser list Types.any_spaces_pos ->
'a Types.any_spaces_pos -> unit
+val check_unless_else :
+ 'a list Types.any_spaces_pos -> 'b list Types.any_spaces_pos -> unit
val check_my_our_paren : ((bool * 'a) * 'b) Types.any_spaces_pos -> unit
val check_simple_pattern : Types.fromparser list -> unit
val only_one : Types.fromparser list Types.any_spaces_pos -> Types.fromparser