Skip to content

Commit 271b1bb

Browse files
committed
---
yaml --- r: 672 b: refs/heads/master c: e6729a6 h: refs/heads/master v: v3
1 parent 4ca4b99 commit 271b1bb

File tree

2 files changed

+107
-9
lines changed

2 files changed

+107
-9
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 5c82cb42e797599036746461eddf2bec1685eaf3
2+
refs/heads/master: e6729a66ecd10a8606488e16a32812fa378bdafe

trunk/src/boot/me/walk.ml

Lines changed: 106 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ type visitor =
1919
visit_slot_identified_post: (Ast.slot identified) -> unit;
2020
visit_expr_pre: Ast.expr -> unit;
2121
visit_expr_post: Ast.expr -> unit;
22+
visit_pexp_pre: Ast.pexp -> unit;
23+
visit_pexp_post: Ast.pexp -> unit;
2224
visit_ty_pre: Ast.ty -> unit;
2325
visit_ty_post: Ast.ty -> unit;
2426
visit_constr_pre: node_id option -> Ast.constr -> unit;
@@ -32,6 +34,8 @@ type visitor =
3234
visit_lit_post: Ast.lit -> unit;
3335
visit_lval_pre: Ast.lval -> unit;
3436
visit_lval_post: Ast.lval -> unit;
37+
visit_plval_pre: Ast.plval -> unit;
38+
visit_plval_post: Ast.plval -> unit;
3539
visit_mod_item_pre:
3640
(Ast.ident
3741
-> ((Ast.ty_param identified) array)
@@ -63,6 +67,8 @@ let empty_visitor =
6367
visit_slot_identified_post = (fun _ -> ());
6468
visit_expr_pre = (fun _ -> ());
6569
visit_expr_post = (fun _ -> ());
70+
visit_pexp_pre = (fun _ -> ());
71+
visit_pexp_post = (fun _ -> ());
6672
visit_ty_pre = (fun _ -> ());
6773
visit_ty_post = (fun _ -> ());
6874
visit_constr_pre = (fun _ _ -> ());
@@ -75,6 +81,8 @@ let empty_visitor =
7581
visit_lit_post = (fun _ -> ());
7682
visit_lval_pre = (fun _ -> ());
7783
visit_lval_post = (fun _ -> ());
84+
visit_plval_pre = (fun _ -> ());
85+
visit_plval_post = (fun _ -> ());
7886
visit_mod_item_pre = (fun _ _ _ -> ());
7987
visit_mod_item_post = (fun _ _ _ -> ());
8088
visit_obj_fn_pre = (fun _ _ _ -> ());
@@ -529,6 +537,15 @@ and walk_stmt
529537
v.visit_stmt_post
530538
s
531539

540+
and walk_unop
541+
(v:visitor)
542+
(unop:Ast.unop)
543+
: unit =
544+
match unop with
545+
Ast.UNOP_cast tyi ->
546+
walk_ty v tyi.node
547+
| _ -> ()
548+
532549

533550
and walk_expr
534551
(v:visitor)
@@ -539,16 +556,97 @@ and walk_expr
539556
Ast.EXPR_binary (_,aa,ab) ->
540557
walk_atom v aa;
541558
walk_atom v ab
542-
| Ast.EXPR_unary (_,a) ->
543-
walk_atom v a
559+
| Ast.EXPR_unary (unop,a) ->
560+
walk_atom v a;
561+
walk_unop v unop
544562
| Ast.EXPR_atom a ->
545563
walk_atom v a
546564
in
547-
walk_bracketed
548-
v.visit_expr_pre
549-
children
550-
v.visit_expr_post
551-
e
565+
walk_bracketed
566+
v.visit_expr_pre
567+
children
568+
v.visit_expr_post
569+
e
570+
571+
and walk_pexp
572+
(v:visitor)
573+
(p:Ast.pexp)
574+
: unit =
575+
let children _ =
576+
match p.node with
577+
Ast.PEXP_call (pexp, pexps) ->
578+
walk_pexp v pexp;
579+
Array.iter (walk_pexp v) pexps
580+
581+
| Ast.PEXP_spawn (_, _, pexp)
582+
| Ast.PEXP_box (_, pexp) ->
583+
walk_pexp v pexp;
584+
585+
| Ast.PEXP_unop (unop, pexp) ->
586+
walk_pexp v pexp;
587+
walk_unop v unop
588+
589+
| Ast.PEXP_bind (pexp, pexp_opts) ->
590+
walk_pexp v pexp;
591+
Array.iter (walk_option (walk_pexp v)) pexp_opts
592+
593+
| Ast.PEXP_rec (elts, base) ->
594+
let walk_elt (_, _, pexp) = walk_pexp v pexp in
595+
Array.iter walk_elt elts;
596+
walk_option (walk_pexp v) base
597+
598+
| Ast.PEXP_tup elts ->
599+
let walk_elt (_, pexp) = walk_pexp v pexp in
600+
Array.iter walk_elt elts
601+
602+
| Ast.PEXP_vec (_, pexps)
603+
| Ast.PEXP_custom (_, pexps, _) ->
604+
Array.iter (walk_pexp v) pexps
605+
606+
| Ast.PEXP_chan po ->
607+
walk_option (walk_pexp v) po
608+
609+
| Ast.PEXP_binop (_, a, b)
610+
| Ast.PEXP_lazy_and (a, b)
611+
| Ast.PEXP_lazy_or (a, b) ->
612+
walk_pexp v a;
613+
walk_pexp v b
614+
615+
| Ast.PEXP_lval pl -> walk_plval v pl
616+
617+
| Ast.PEXP_lit lit -> walk_lit v lit
618+
619+
| Ast.PEXP_port
620+
| Ast.PEXP_str _ -> ()
621+
in
622+
walk_bracketed
623+
v.visit_pexp_pre
624+
children
625+
v.visit_pexp_post
626+
p
627+
628+
and walk_plval
629+
(v:visitor)
630+
(p:Ast.plval)
631+
: unit =
632+
let children _ =
633+
match p with
634+
Ast.PLVAL_ident _ -> ()
635+
| Ast.PLVAL_app (_, tys) ->
636+
Array.iter (walk_ty v) tys
637+
| Ast.PLVAL_ext_name (pexp, _) ->
638+
walk_pexp v pexp
639+
| Ast.PLVAL_ext_pexp (a, b) ->
640+
walk_pexp v a;
641+
walk_pexp v b;
642+
| Ast.PLVAL_ext_deref pexp ->
643+
walk_pexp v pexp
644+
in
645+
walk_bracketed
646+
v.visit_plval_pre
647+
children
648+
v.visit_plval_post
649+
p
552650

553651
and walk_atom
554652
(v:visitor)
@@ -557,7 +655,7 @@ and walk_atom
557655
match a with
558656
Ast.ATOM_literal ls -> walk_lit v ls.node
559657
| Ast.ATOM_lval lv -> walk_lval v lv
560-
| Ast.ATOM_pexp _ -> bug () "Walk.walk_atom on ATOM_pexp"
658+
| Ast.ATOM_pexp p -> walk_pexp v p
561659

562660

563661
and walk_opt_atom

0 commit comments

Comments
 (0)