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