diff options
author | Pascal Rigaux <pixel@mandriva.com> | 2004-04-28 12:34:42 +0000 |
---|---|---|
committer | Pascal Rigaux <pixel@mandriva.com> | 2004-04-28 12:34:42 +0000 |
commit | f1e322310f4ca8240b3da447d18b716dec7f7262 (patch) | |
tree | d96b9f9e6a459df7491888dd90a254b9743968b2 /perl_checker.src/parser_helper.ml | |
parent | 70dcfcd34535185dcac19d115f16a295711b267a (diff) | |
download | perl-MDK-Common-f1e322310f4ca8240b3da447d18b716dec7f7262.tar perl-MDK-Common-f1e322310f4ca8240b3da447d18b716dec7f7262.tar.gz perl-MDK-Common-f1e322310f4ca8240b3da447d18b716dec7f7262.tar.bz2 perl-MDK-Common-f1e322310f4ca8240b3da447d18b716dec7f7262.tar.xz perl-MDK-Common-f1e322310f4ca8240b3da447d18b716dec7f7262.zip |
get_pos_from_expr() (previously named get_pos_from_tree()) is useful, even in parser_helper
Diffstat (limited to 'perl_checker.src/parser_helper.ml')
-rw-r--r-- | perl_checker.src/parser_helper.ml | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/perl_checker.src/parser_helper.ml b/perl_checker.src/parser_helper.ml index cefff7b..fc578a1 100644 --- a/perl_checker.src/parser_helper.ml +++ b/perl_checker.src/parser_helper.ml @@ -168,6 +168,40 @@ let from_array esp = | Deref(I_array, ident) -> ident | _ -> internal_error "from_array" +let rec get_pos_from_expr = function + | Anonymous_sub(_, _, pos) + | String(_, pos) + | Call_op(_, _, pos) + | Perl_checker_comment(_, pos) + | My_our(_, _, pos) + | Raw_string(_, pos) + | Num(_, pos) + | Ident(_, _, pos) + -> pos + + | Package e + | Ref(_, e) + | Deref(_, e) + | Sub_declaration(e, _, _, _) + | Deref_with(_, _, e, _) + | Use(e, _) + | Call(e, _) + | Method_call(_, e, _) + -> get_pos_from_expr e + + | Diamond(option_e) + -> if option_e = None then raw_pos2pos bpos else get_pos_from_expr (some option_e) + + | List l + | Block l + -> if l = [] then raw_pos2pos bpos else get_pos_from_expr (List.hd l) + + | Semi_colon + | Too_complex + | Undef + | Label _ + -> raw_pos2pos bpos + let msg_with_rawpos (start, end_) msg = Info.pos2sfull_current start end_ ^ msg let die_with_rawpos raw_pos msg = failwith (msg_with_rawpos raw_pos msg) let warn raw_pos msg = print_endline_flush (msg_with_rawpos raw_pos msg) |