Skip to content

Commit db47e9e

Browse files
authored
Merge pull request #4917 from rescript-lang/simpilify_visitor2
continue simplify visitor
2 parents edffe62 + 85e39b1 commit db47e9e

File tree

13 files changed

+230
-178
lines changed

13 files changed

+230
-178
lines changed

jscomp/core/js_analyzer.ml

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ let add_defined_idents (x : idents_stats) ident =
4444
Note such shaking is done in the toplevel, so that it requires us to
4545
flatten the statement first
4646
*)
47-
let super = Js_record_iter.iter
47+
let super = Js_record_iter.super
4848
let free_variables (stats : idents_stats) = {
4949
super with
5050
variable_declaration = begin fun self st ->
@@ -76,18 +76,20 @@ let free_variables (stats : idents_stats) = {
7676
end
7777
}
7878

79+
let init = {used_idents = Set_ident.empty;
80+
defined_idents = Set_ident.empty}
81+
let obj = free_variables init
82+
let clean_up init =
83+
init.used_idents <- Set_ident.empty;
84+
init.defined_idents <- Set_ident.empty
7985

8086
let free_variables_of_statement st =
81-
let init = {used_idents = Set_ident.empty;
82-
defined_idents = Set_ident.empty} in
83-
let obj = free_variables init in
87+
clean_up init;
8488
obj.statement obj st ;
8589
Set_ident.diff init.used_idents init.defined_idents
8690

8791
let free_variables_of_expression st =
88-
let init = {used_idents = Set_ident.empty;
89-
defined_idents = Set_ident.empty} in
90-
let obj = free_variables init in
92+
clean_up init;
9193
obj.expression obj st ;
9294
Set_ident.diff init.used_idents init.defined_idents
9395

@@ -143,7 +145,7 @@ and no_side_effect (x : J.expression) =
143145

144146
let no_side_effect_expression (x : J.expression) = no_side_effect x
145147

146-
let super = Js_record_iter.iter
148+
let super = Js_record_iter.super
147149
let no_side_effect_obj =
148150
{super with
149151
statement = (fun self s ->

jscomp/core/js_fold_basic.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
let add_lam_module_ident = Lam_module_ident.Hash_set.add
2929
let create = Lam_module_ident.Hash_set.create
3030

31-
let super = Js_record_iter.iter
31+
let super = Js_record_iter.super
3232
let count_hard_dependencies hard_dependencies = {
3333
super with
3434
module_id = begin

jscomp/core/js_pass_flatten_and_mark_dead.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ type meta_info =
3939
| Recursive
4040

4141

42-
let super = Js_record_iter.iter
42+
let super = Js_record_iter.super
4343

4444
let mark_dead_code (js : J.program) : J.program =
4545
let ident_use_stats : meta_info Hash_ident.t

jscomp/core/js_pass_get_used.ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ let post_process_stats my_export_set (defined_idents : J.variable_declaration Ha
4848
since in this case it can not be global?
4949
5050
*)
51-
let super = Js_record_iter.iter
51+
let super = Js_record_iter.super
5252
let count_collects
5353
(* collect used status*)
5454
(stats : int Hash_ident.t)

jscomp/core/js_record_iter.ml

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
open J
33
let unknown _ _ = ()
4-
let option sub self = fun v ->
4+
let [@inline] option sub self = fun v ->
55
match v with
66
| None -> ()
77
| Some v -> sub self v
@@ -38,9 +38,9 @@ program : program fn;
3838
deps_program : deps_program fn
3939
}
4040
and 'a fn = iter -> 'a -> unit
41-
let iter : iter = {
41+
let super : iter = {
4242
label : label fn = ( unknown ) ;
43-
required_modules : required_modules fn = ( fun _self arg -> list ((fun _self arg -> _self.module_id _self arg)) _self arg ) ;
43+
required_modules : required_modules fn = ( fun _self arg -> list _self.module_id _self arg ) ;
4444
ident : ident fn = ( unknown ) ;
4545
module_id : module_id fn = ( fun _self { id = _x0;kind = _x1} -> begin _self.ident _self _x0 end ) ;
4646
vident : vident fn = ( fun _self -> function
@@ -78,28 +78,28 @@ deps_program : deps_program fn
7878
|FlatCall ( _x0,_x1) ->
7979
begin _self.expression _self _x0;_self.expression _self _x1 end
8080
|Call ( _x0,_x1,_x2) ->
81-
begin _self.expression _self _x0;list ((fun _self arg -> _self.expression _self arg)) _self _x1 end
81+
begin _self.expression _self _x0;list _self.expression _self _x1 end
8282
|String_index ( _x0,_x1) ->
8383
begin _self.expression _self _x0;_self.expression _self _x1 end
8484
|Array_index ( _x0,_x1) ->
8585
begin _self.expression _self _x0;_self.expression _self _x1 end
8686
|Static_index ( _x0,_x1,_x2) ->
8787
begin _self.expression _self _x0 end
8888
|New ( _x0,_x1) ->
89-
begin _self.expression _self _x0;option (fun _self arg -> list ((fun _self arg -> _self.expression _self arg)) _self arg) _self _x1 end
89+
begin _self.expression _self _x0;option (fun _self arg -> list _self.expression _self arg) _self _x1 end
9090
|Var ( _x0) ->
9191
begin _self.vident _self _x0 end
9292
|Fun ( _x0,_x1,_x2,_x3) ->
93-
begin list ((fun _self arg -> _self.ident _self arg)) _self _x1;_self.block _self _x2 end
93+
begin list _self.ident _self _x1;_self.block _self _x2 end
9494
|Str _ -> ()
9595
|Unicode _ -> ()
9696
|Raw_js_code _ -> ()
9797
|Array ( _x0,_x1) ->
98-
begin list ((fun _self arg -> _self.expression _self arg)) _self _x0 end
98+
begin list _self.expression _self _x0 end
9999
|Optional_block ( _x0,_x1) ->
100100
begin _self.expression _self _x0 end
101101
|Caml_block ( _x0,_x1,_x2,_x3) ->
102-
begin list ((fun _self arg -> _self.expression _self arg)) _self _x0;_self.expression _self _x2 end
102+
begin list _self.expression _self _x0;_self.expression _self _x2 end
103103
|Caml_block_tag ( _x0) ->
104104
begin _self.expression _self _x0 end
105105
|Number _ -> ()
@@ -119,30 +119,30 @@ deps_program : deps_program fn
119119
|If ( _x0,_x1,_x2) ->
120120
begin _self.expression _self _x0;_self.block _self _x1;_self.block _self _x2 end
121121
|While ( _x0,_x1,_x2,_x3) ->
122-
begin option ((fun _self arg -> _self.label _self arg)) _self _x0;_self.expression _self _x1;_self.block _self _x2 end
122+
begin option _self.label _self _x0;_self.expression _self _x1;_self.block _self _x2 end
123123
|ForRange ( _x0,_x1,_x2,_x3,_x4,_x5) ->
124-
begin option ((fun _self arg -> _self.for_ident_expression _self arg)) _self _x0;_self.finish_ident_expression _self _x1;_self.for_ident _self _x2;_self.for_direction _self _x3;_self.block _self _x4 end
124+
begin option _self.for_ident_expression _self _x0;_self.finish_ident_expression _self _x1;_self.for_ident _self _x2;_self.for_direction _self _x3;_self.block _self _x4 end
125125
|Continue ( _x0) ->
126126
begin _self.label _self _x0 end
127127
|Break -> ()
128128
|Return ( _x0) ->
129129
begin _self.expression _self _x0 end
130130
|Int_switch ( _x0,_x1,_x2) ->
131-
begin _self.expression _self _x0;list ((fun _self arg -> _self.int_clause _self arg)) _self _x1;option ((fun _self arg -> _self.block _self arg)) _self _x2 end
131+
begin _self.expression _self _x0;list _self.int_clause _self _x1;option _self.block _self _x2 end
132132
|String_switch ( _x0,_x1,_x2) ->
133-
begin _self.expression _self _x0;list ((fun _self arg -> _self.string_clause _self arg)) _self _x1;option ((fun _self arg -> _self.block _self arg)) _self _x2 end
133+
begin _self.expression _self _x0;list _self.string_clause _self _x1;option _self.block _self _x2 end
134134
|Throw ( _x0) ->
135135
begin _self.expression _self _x0 end
136136
|Try ( _x0,_x1,_x2) ->
137-
begin _self.block _self _x0;option ((fun _self (_x0,_x1) -> begin _self.exception_ident _self _x0;_self.block _self _x1 end)) _self _x1;option ((fun _self arg -> _self.block _self arg)) _self _x2 end
137+
begin _self.block _self _x0;option ((fun _self (_x0,_x1) -> begin _self.exception_ident _self _x0;_self.block _self _x1 end)) _self _x1;option _self.block _self _x2 end
138138
|Debugger -> () ) ;
139139
expression : expression fn = ( fun _self { expression_desc = _x0;comment = _x1} -> begin _self.expression_desc _self _x0 end ) ;
140140
statement : statement fn = ( fun _self { statement_desc = _x0;comment = _x1} -> begin _self.statement_desc _self _x0 end ) ;
141-
variable_declaration : variable_declaration fn = ( fun _self { ident = _x0;value = _x1;property = _x2;ident_info = _x3} -> begin _self.ident _self _x0;option ((fun _self arg -> _self.expression _self arg)) _self _x1 end ) ;
141+
variable_declaration : variable_declaration fn = ( fun _self { ident = _x0;value = _x1;property = _x2;ident_info = _x3} -> begin _self.ident _self _x0;option _self.expression _self _x1 end ) ;
142142
string_clause : string_clause fn = ( (fun _self (_x0,_x1) -> begin _self.case_clause _self _x1 end) ) ;
143143
int_clause : int_clause fn = ( (fun _self (_x0,_x1) -> begin _self.case_clause _self _x1 end) ) ;
144144
case_clause : case_clause fn = ( fun _self { switch_body = _x0;should_break = _x1;comment = _x2} -> begin _self.block _self _x0 end ) ;
145-
block : block fn = ( fun _self arg -> list ((fun _self arg -> _self.statement _self arg)) _self arg ) ;
145+
block : block fn = ( fun _self arg -> list _self.statement _self arg ) ;
146146
program : program fn = ( fun _self { block = _x0;exports = _x1;export_set = _x2} -> begin _self.block _self _x0 end ) ;
147147
deps_program : deps_program fn = ( fun _self { program = _x0;modules = _x1;side_effect = _x2} -> begin _self.program _self _x0;_self.required_modules _self _x1 end )
148148
}

jscomp/core/js_record_map.ml

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
open J
33
let [@inline] unknown _ x = x
4-
let option sub self = fun v ->
4+
let [@inline] option sub self = fun v ->
55
match v with
66
| None -> None
77
| Some v -> Some (sub self v)
@@ -40,7 +40,7 @@ deps_program : deps_program fn
4040
and 'a fn = iter -> 'a -> 'a
4141
let super : iter = {
4242
label : label fn = ( unknown ) ;
43-
required_modules : required_modules fn = ( fun _self arg -> list ((fun _self arg -> _self.module_id _self arg)) _self arg ) ;
43+
required_modules : required_modules fn = ( fun _self arg -> list _self.module_id _self arg ) ;
4444
ident : ident fn = ( unknown ) ;
4545
module_id : module_id fn = ( fun _self { id = _x0;kind = _x1} -> begin let _x0 = _self.ident _self _x0 in {id = _x0;kind = _x1} end ) ;
4646
vident : vident fn = ( fun _self -> function
@@ -86,7 +86,7 @@ let _x2 = _self.expression _self _x2 in Bin ( _x0,_x1,_x2) end
8686
let _x1 = _self.expression _self _x1 in FlatCall ( _x0,_x1) end
8787
|Call ( _x0,_x1,_x2) ->
8888
begin let _x0 = _self.expression _self _x0 in
89-
let _x1 = list ((fun _self arg -> _self.expression _self arg)) _self _x1 in Call ( _x0,_x1,_x2) end
89+
let _x1 = list _self.expression _self _x1 in Call ( _x0,_x1,_x2) end
9090
|String_index ( _x0,_x1) ->
9191
begin let _x0 = _self.expression _self _x0 in
9292
let _x1 = _self.expression _self _x1 in String_index ( _x0,_x1) end
@@ -97,21 +97,21 @@ let _x1 = _self.expression _self _x1 in Array_index ( _x0,_x1) end
9797
begin let _x0 = _self.expression _self _x0 in Static_index ( _x0,_x1,_x2) end
9898
|New ( _x0,_x1) ->
9999
begin let _x0 = _self.expression _self _x0 in
100-
let _x1 = option (fun _self arg -> list ((fun _self arg -> _self.expression _self arg)) _self arg) _self _x1 in New ( _x0,_x1) end
100+
let _x1 = option (fun _self arg -> list _self.expression _self arg) _self _x1 in New ( _x0,_x1) end
101101
|Var ( _x0) ->
102102
begin let _x0 = _self.vident _self _x0 in Var ( _x0) end
103103
|Fun ( _x0,_x1,_x2,_x3) ->
104-
begin let _x1 = list ((fun _self arg -> _self.ident _self arg)) _self _x1 in
104+
begin let _x1 = list _self.ident _self _x1 in
105105
let _x2 = _self.block _self _x2 in Fun ( _x0,_x1,_x2,_x3) end
106106
|Str _ as v -> v
107107
|Unicode _ as v -> v
108108
|Raw_js_code _ as v -> v
109109
|Array ( _x0,_x1) ->
110-
begin let _x0 = list ((fun _self arg -> _self.expression _self arg)) _self _x0 in Array ( _x0,_x1) end
110+
begin let _x0 = list _self.expression _self _x0 in Array ( _x0,_x1) end
111111
|Optional_block ( _x0,_x1) ->
112112
begin let _x0 = _self.expression _self _x0 in Optional_block ( _x0,_x1) end
113113
|Caml_block ( _x0,_x1,_x2,_x3) ->
114-
begin let _x0 = list ((fun _self arg -> _self.expression _self arg)) _self _x0 in
114+
begin let _x0 = list _self.expression _self _x0 in
115115
let _x2 = _self.expression _self _x2 in Caml_block ( _x0,_x1,_x2,_x3) end
116116
|Caml_block_tag ( _x0) ->
117117
begin let _x0 = _self.expression _self _x0 in Caml_block_tag ( _x0) end
@@ -134,11 +134,11 @@ let _x2 = _self.expression _self _x2 in Caml_block ( _x0,_x1,_x2,_x3) end
134134
let _x1 = _self.block _self _x1 in
135135
let _x2 = _self.block _self _x2 in If ( _x0,_x1,_x2) end
136136
|While ( _x0,_x1,_x2,_x3) ->
137-
begin let _x0 = option ((fun _self arg -> _self.label _self arg)) _self _x0 in
137+
begin let _x0 = option _self.label _self _x0 in
138138
let _x1 = _self.expression _self _x1 in
139139
let _x2 = _self.block _self _x2 in While ( _x0,_x1,_x2,_x3) end
140140
|ForRange ( _x0,_x1,_x2,_x3,_x4,_x5) ->
141-
begin let _x0 = option ((fun _self arg -> _self.for_ident_expression _self arg)) _self _x0 in
141+
begin let _x0 = option _self.for_ident_expression _self _x0 in
142142
let _x1 = _self.finish_ident_expression _self _x1 in
143143
let _x2 = _self.for_ident _self _x2 in
144144
let _x3 = _self.for_direction _self _x3 in
@@ -150,27 +150,27 @@ let _x4 = _self.block _self _x4 in ForRange ( _x0,_x1,_x2,_x3,_x4,_x5) end
150150
begin let _x0 = _self.expression _self _x0 in Return ( _x0) end
151151
|Int_switch ( _x0,_x1,_x2) ->
152152
begin let _x0 = _self.expression _self _x0 in
153-
let _x1 = list ((fun _self arg -> _self.int_clause _self arg)) _self _x1 in
154-
let _x2 = option ((fun _self arg -> _self.block _self arg)) _self _x2 in Int_switch ( _x0,_x1,_x2) end
153+
let _x1 = list _self.int_clause _self _x1 in
154+
let _x2 = option _self.block _self _x2 in Int_switch ( _x0,_x1,_x2) end
155155
|String_switch ( _x0,_x1,_x2) ->
156156
begin let _x0 = _self.expression _self _x0 in
157-
let _x1 = list ((fun _self arg -> _self.string_clause _self arg)) _self _x1 in
158-
let _x2 = option ((fun _self arg -> _self.block _self arg)) _self _x2 in String_switch ( _x0,_x1,_x2) end
157+
let _x1 = list _self.string_clause _self _x1 in
158+
let _x2 = option _self.block _self _x2 in String_switch ( _x0,_x1,_x2) end
159159
|Throw ( _x0) ->
160160
begin let _x0 = _self.expression _self _x0 in Throw ( _x0) end
161161
|Try ( _x0,_x1,_x2) ->
162162
begin let _x0 = _self.block _self _x0 in
163163
let _x1 = option ((fun _self (_x0,_x1) -> begin let _x0 = _self.exception_ident _self _x0 in let _x1 = _self.block _self _x1 in (_x0,_x1) end)) _self _x1 in
164-
let _x2 = option ((fun _self arg -> _self.block _self arg)) _self _x2 in Try ( _x0,_x1,_x2) end
164+
let _x2 = option _self.block _self _x2 in Try ( _x0,_x1,_x2) end
165165
|Debugger as v -> v ) ;
166166
expression : expression fn = ( fun _self { expression_desc = _x0;comment = _x1} -> begin let _x0 = _self.expression_desc _self _x0 in {expression_desc = _x0;comment = _x1} end ) ;
167167
statement : statement fn = ( fun _self { statement_desc = _x0;comment = _x1} -> begin let _x0 = _self.statement_desc _self _x0 in {statement_desc = _x0;comment = _x1} end ) ;
168168
variable_declaration : variable_declaration fn = ( fun _self { ident = _x0;value = _x1;property = _x2;ident_info = _x3} -> begin let _x0 = _self.ident _self _x0 in
169-
let _x1 = option ((fun _self arg -> _self.expression _self arg)) _self _x1 in {ident = _x0;value = _x1;property = _x2;ident_info = _x3} end ) ;
169+
let _x1 = option _self.expression _self _x1 in {ident = _x0;value = _x1;property = _x2;ident_info = _x3} end ) ;
170170
string_clause : string_clause fn = ( (fun _self (_x0,_x1) -> begin let _x1 = _self.case_clause _self _x1 in (_x0,_x1) end) ) ;
171171
int_clause : int_clause fn = ( (fun _self (_x0,_x1) -> begin let _x1 = _self.case_clause _self _x1 in (_x0,_x1) end) ) ;
172172
case_clause : case_clause fn = ( fun _self { switch_body = _x0;should_break = _x1;comment = _x2} -> begin let _x0 = _self.block _self _x0 in {switch_body = _x0;should_break = _x1;comment = _x2} end ) ;
173-
block : block fn = ( fun _self arg -> list ((fun _self arg -> _self.statement _self arg)) _self arg ) ;
173+
block : block fn = ( fun _self arg -> list _self.statement _self arg ) ;
174174
program : program fn = ( fun _self { block = _x0;exports = _x1;export_set = _x2} -> begin let _x0 = _self.block _self _x0 in {block = _x0;exports = _x1;export_set = _x2} end ) ;
175175
deps_program : deps_program fn = ( fun _self { program = _x0;modules = _x1;side_effect = _x2} -> begin let _x0 = _self.program _self _x0 in
176176
let _x1 = _self.required_modules _self _x1 in {program = _x0;modules = _x1;side_effect = _x2} end )

0 commit comments

Comments
 (0)