@@ -44,21 +44,21 @@ let add_defined_idents (x : idents_stats) ident =
44
44
Note such shaking is done in the toplevel, so that it requires us to
45
45
flatten the statement first
46
46
*)
47
- let free_variables (stats : idents_stats ) : Js_fold.fold =
47
+ let free_variables (stats : idents_stats ) : Js_iter.iter =
48
48
object (self )
49
- inherit Js_fold. fold as super
49
+ inherit Js_iter. iter as super
50
50
method! variable_declaration st =
51
51
add_defined_idents stats st.ident;
52
52
match st.value with
53
53
| None
54
- -> self
54
+ -> ()
55
55
| Some v
56
56
->
57
57
self # expression v
58
58
method! ident id =
59
59
(if not (Set_ident. mem stats.defined_idents id )then
60
- stats.used_idents < - Set_ident. add stats.used_idents id);
61
- self
60
+ stats.used_idents < - Set_ident. add stats.used_idents id)
61
+
62
62
method! expression exp =
63
63
match exp.expression_desc with
64
64
| Fun (_, _,_, env)
@@ -67,8 +67,8 @@ let free_variables (stats : idents_stats) : Js_fold.fold =
67
67
*)
68
68
->
69
69
stats.used_idents < -
70
- Set_ident. union (Js_fun_env. get_unbounded env) stats.used_idents;
71
- self
70
+ Set_ident. union (Js_fun_env. get_unbounded env) stats.used_idents
71
+
72
72
73
73
| _
74
74
->
@@ -139,32 +139,31 @@ and no_side_effect (x : J.expression) =
139
139
140
140
let no_side_effect_expression (x : J.expression ) = no_side_effect x
141
141
142
- let no_side_effect clean : Js_fold.fold =
142
+ let no_side_effect clean : Js_iter.iter =
143
143
object (self )
144
- inherit Js_fold. fold as super
144
+ inherit Js_iter. iter as super
145
145
method! statement s =
146
- if not ! clean then self else
146
+ if ! clean then
147
147
match s.statement_desc with
148
148
| Throw _
149
149
| Debugger
150
150
| Break
151
151
| Variable _
152
152
| Continue _ ->
153
- clean := false ; self
153
+ clean := false
154
154
| Exp e -> self#expression e
155
155
| Int_switch _ | String_switch _ | ForRange _
156
156
| If _ | While _ | Block _ | Return _ | Try _ -> super#statement s
157
157
method! list f x =
158
- if not ! clean then self else super#list f x
158
+ if ! clean then super#list f x
159
159
method! expression s =
160
- (if ! clean then
161
- clean := no_side_effect_expression s);
162
- self
163
- (* * only expression would cause side effec *)
160
+ if ! clean then
161
+ clean := no_side_effect_expression s
162
+ (* * only expression would cause side effec *)
164
163
end
165
164
let no_side_effect_statement st =
166
165
let clean = ref true in
167
- let _ : Js_fold.fold = (( no_side_effect clean)#statement st) in
166
+ ( no_side_effect clean)#statement st;
168
167
! clean
169
168
170
169
(* TODO: generate [fold2]
0 commit comments