4
4
let [@ inline] option sub self = fun v ->
5
5
match v with
6
6
| None -> self
7
- | Some x -> sub x
7
+ | Some x -> sub self x
8
+ let rec list (sub : 'self_type -> 'a -> 'self_type ) self = fun v ->
9
+ match v with
10
+ | [] -> self
11
+ | x ::xs ->
12
+ let self = sub self x in
13
+ list sub self xs
8
14
class fold =
9
15
object ((_self : 'self_type ))
10
16
method list :
14
20
| [] -> _self
15
21
| _x :: _x_i1 -> let _self = _f_a _self _x in let _self = _self#list _f_a _x_i1 in _self
16
22
method label : label -> 'self_type = unknown _self
17
- method required_modules : required_modules -> 'self_type = _self# list (fun _self -> _self#module_id)
23
+ method required_modules : required_modules -> 'self_type = list (fun _self -> _self#module_id) _self
18
24
method ident : ident -> 'self_type = unknown _self
19
25
method module_id : module_id -> 'self_type = fun { id = _x0 ;kind = _x1 } -> let _self = _self#ident _x0 in _self
20
26
method vident : vident -> 'self_type = function
@@ -27,7 +33,7 @@ let _self = _self#module_id _x0 in
27
33
method exception_ident : exception_ident -> 'self_type = _self#ident
28
34
method for_ident : for_ident -> 'self_type = _self#ident
29
35
method for_direction : for_direction -> 'self_type = unknown _self
30
- method property_map : property_map -> 'self_type = _self# list (fun _self -> fun ( _x0 ,_x1 ) -> let _self = _self#expression _x1 in _self)
36
+ method property_map : property_map -> 'self_type = list (fun _self -> fun ( _x0 ,_x1 ) -> let _self = _self#expression _x1 in _self) _self
31
37
method length_object : length_object -> 'self_type = unknown _self
32
38
method expression_desc : expression_desc -> 'self_type = function
33
39
| Length ( _x0 ,_x1 ) ->
@@ -73,7 +79,7 @@ let _self = _self#expression _x1 in
73
79
_self
74
80
| Call ( _x0 ,_x1 ,_x2 ) ->
75
81
let _self = _self#expression _x0 in
76
- let _self = _self# list (fun _self -> _self#expression) _x1 in
82
+ let _self = list (fun _self -> _self#expression) _self _x1 in
77
83
_self
78
84
| String_index ( _x0 ,_x1 ) ->
79
85
let _self = _self#expression _x0 in
@@ -88,26 +94,26 @@ let _self = _self#expression _x0 in
88
94
_self
89
95
| New ( _x0 ,_x1 ) ->
90
96
let _self = _self#expression _x0 in
91
- let _self = option (_self# list (fun _self -> _self#expression)) _self _x1 in
97
+ let _self = option (fun _self -> list (fun _self -> _self#expression) _self ) _self _x1 in
92
98
_self
93
99
| Var ( _x0 ) ->
94
100
let _self = _self#vident _x0 in
95
101
_self
96
102
| Fun ( _x0 ,_x1 ,_x2 ,_x3 ) ->
97
- let _self = _self# list (fun _self -> _self#ident) _x1 in
103
+ let _self = list (fun _self -> _self#ident) _self _x1 in
98
104
let _self = _self#block _x2 in
99
105
_self
100
106
| Str _ -> _self
101
107
| Unicode _ -> _self
102
108
| Raw_js_code _ -> _self
103
109
| Array ( _x0 ,_x1 ) ->
104
- let _self = _self# list (fun _self -> _self#expression) _x0 in
110
+ let _self = list (fun _self -> _self#expression) _self _x0 in
105
111
_self
106
112
| Optional_block ( _x0 ,_x1 ) ->
107
113
let _self = _self#expression _x0 in
108
114
_self
109
115
| Caml_block ( _x0 ,_x1 ,_x2 ,_x3 ) ->
110
- let _self = _self# list (fun _self -> _self#expression) _x0 in
116
+ let _self = list (fun _self -> _self#expression) _self _x0 in
111
117
let _self = _self#expression _x2 in
112
118
_self
113
119
| Caml_block_tag ( _x0 ) ->
@@ -137,12 +143,12 @@ let _self = _self#block _x1 in
137
143
let _self = _self#block _x2 in
138
144
_self
139
145
| While ( _x0 ,_x1 ,_x2 ,_x3 ) ->
140
- let _self = option (_self#label) _self _x0 in
146
+ let _self = option (fun _self -> _self#label) _self _x0 in
141
147
let _self = _self#expression _x1 in
142
148
let _self = _self#block _x2 in
143
149
_self
144
150
| ForRange ( _x0 ,_x1 ,_x2 ,_x3 ,_x4 ,_x5 ) ->
145
- let _self = option (_self#for_ident_expression) _self _x0 in
151
+ let _self = option (fun _self -> _self#for_ident_expression) _self _x0 in
146
152
let _self = _self#finish_ident_expression _x1 in
147
153
let _self = _self#for_ident _x2 in
148
154
let _self = _self#for_direction _x3 in
@@ -157,31 +163,31 @@ let _self = _self#expression _x0 in
157
163
_self
158
164
| Int_switch ( _x0 ,_x1 ,_x2 ) ->
159
165
let _self = _self#expression _x0 in
160
- let _self = _self# list (fun _self -> _self#int_clause) _x1 in
161
- let _self = option (_self#block) _self _x2 in
166
+ let _self = list (fun _self -> _self#int_clause) _self _x1 in
167
+ let _self = option (fun _self -> _self#block) _self _x2 in
162
168
_self
163
169
| String_switch ( _x0 ,_x1 ,_x2 ) ->
164
170
let _self = _self#expression _x0 in
165
- let _self = _self# list (fun _self -> _self#string_clause) _x1 in
166
- let _self = option (_self#block) _self _x2 in
171
+ let _self = list (fun _self -> _self#string_clause) _self _x1 in
172
+ let _self = option (fun _self -> _self#block) _self _x2 in
167
173
_self
168
174
| Throw ( _x0 ) ->
169
175
let _self = _self#expression _x0 in
170
176
_self
171
177
| Try ( _x0 ,_x1 ,_x2 ) ->
172
178
let _self = _self#block _x0 in
173
- let _self = option (fun ( _x0 ,_x1 ) -> let _self = _self#exception_ident _x0 in let _self = _self#block _x1 in _self) _self _x1 in
174
- let _self = option (_self#block) _self _x2 in
179
+ let _self = option (fun _self -> fun ( _x0 ,_x1 ) -> let _self = _self#exception_ident _x0 in let _self = _self#block _x1 in _self) _self _x1 in
180
+ let _self = option (fun _self -> _self#block) _self _x2 in
175
181
_self
176
182
| Debugger -> _self
177
183
method expression : expression -> 'self_type = fun { expression_desc = _x0 ;comment = _x1 } -> let _self = _self#expression_desc _x0 in _self
178
184
method statement : statement -> 'self_type = fun { statement_desc = _x0 ;comment = _x1 } -> let _self = _self#statement_desc _x0 in _self
179
185
method variable_declaration : variable_declaration -> 'self_type = fun { ident = _x0 ;value = _x1 ;property = _x2 ;ident_info = _x3 } -> let _self = _self#ident _x0 in
180
- let _self = option (_self#expression) _self _x1 in _self
186
+ let _self = option (fun _self -> _self#expression) _self _x1 in _self
181
187
method string_clause : string_clause -> 'self_type = fun ( _x0 ,_x1 ) -> let _self = _self#case_clause _x1 in _self
182
188
method int_clause : int_clause -> 'self_type = fun ( _x0 ,_x1 ) -> let _self = _self#case_clause _x1 in _self
183
189
method case_clause : case_clause -> 'self_type = fun { switch_body = _x0 ;should_break = _x1 ;comment = _x2 } -> let _self = _self#block _x0 in _self
184
- method block : block -> 'self_type = _self# list (fun _self -> _self#statement)
190
+ method block : block -> 'self_type = list (fun _self -> _self#statement) _self
185
191
method program : program -> 'self_type = fun { block = _x0 ;exports = _x1 ;export_set = _x2 } -> let _self = _self#block _x0 in _self
186
192
method deps_program : deps_program -> 'self_type = fun { program = _x0 ;modules = _x1 ;side_effect = _x2 } -> let _self = _self#program _x0 in
187
193
let _self = _self#required_modules _x1 in _self
0 commit comments