@@ -116,9 +116,9 @@ let [@ocamlformat "disable"] print ppf { round; typing_env;
116
116
(Format. pp_print_list ~pp_sep: Format. pp_print_space Lifted_cont_params. print) defined_variables_by_scope
117
117
cost_of_lifting_continuations_out_of_current_one
118
118
119
- let define_variable t var kind =
119
+ let define_variable0 ~ extra t var kind =
120
120
let defined_variables_by_scope =
121
- if Variable.Set. mem (Bound_var. var var) t.lifted
121
+ if extra || Variable.Set. mem (Bound_var. var var) t.lifted
122
122
then t.defined_variables_by_scope
123
123
else
124
124
match t.defined_variables_by_scope with
@@ -146,6 +146,9 @@ let define_variable t var kind =
146
146
defined_variables_by_scope
147
147
}
148
148
149
+ let define_variable t var kind =
150
+ (define_variable0 [@ inlined hint]) ~extra: false t var kind
151
+
149
152
let create ~round ~(resolver : resolver )
150
153
~(get_imported_names : get_imported_names )
151
154
~(get_imported_code : get_imported_code ) ~propagating_float_consts
@@ -290,12 +293,15 @@ let define_name t name kind =
290
293
kind)
291
294
~symbol: (fun [@inline ] sym -> (define_symbol [@ inlined hint]) t sym kind)
292
295
293
- let add_variable t var ty =
294
- let t = (define_variable [@ inlined hint]) t var (T. kind ty) in
296
+ let add_variable0 ~ extra t var ty =
297
+ let t = (define_variable0 [@ inlined hint]) ~extra t var (T. kind ty) in
295
298
{ t with
296
299
typing_env = TE. add_equation t.typing_env (Name. var (Bound_var. var var)) ty
297
300
}
298
301
302
+ let add_variable t var ty =
303
+ (add_variable0 [@ inlined hint]) ~extra: false t var ty
304
+
299
305
let add_symbol t sym ty =
300
306
let t = (define_symbol [@ inlined hint]) t sym (T. kind ty) in
301
307
{ t with typing_env = TE. add_equation t.typing_env (Name. symbol sym) ty }
@@ -339,15 +345,16 @@ let add_equation_on_name t name ty =
339
345
let typing_env = TE. add_equation t.typing_env name ty in
340
346
{ t with typing_env }
341
347
342
- let define_parameters t ~params =
348
+ let define_parameters ~ extra t ~params =
343
349
List. fold_left
344
350
(fun t param ->
345
351
let var = Bound_var. create (BP. var param) Name_mode. normal in
346
- define_variable t var (K.With_subkind. kind (BP. kind param)))
352
+ define_variable0 ~extra t var (K.With_subkind. kind (BP. kind param)))
347
353
t
348
354
(Bound_parameters. to_list params)
349
355
350
- let add_parameters ?(name_mode = Name_mode. normal) t params ~param_types =
356
+ let add_parameters ~extra ?(name_mode = Name_mode. normal) t params ~param_types
357
+ =
351
358
let params' = params in
352
359
let params = Bound_parameters. to_list params in
353
360
if List. compare_lengths params param_types <> 0
@@ -360,10 +367,10 @@ let add_parameters ?(name_mode = Name_mode.normal) t params ~param_types =
360
367
List. fold_left2
361
368
(fun t param param_type ->
362
369
let var = Bound_var. create (BP. var param) name_mode in
363
- add_variable t var param_type)
370
+ add_variable0 ~extra t var param_type)
364
371
t params param_types
365
372
366
- let add_parameters_with_unknown_types ?alloc_modes ?name_mode t params =
373
+ let add_parameters_with_unknown_types ~ extra ?alloc_modes ?name_mode t params =
367
374
let params' = params in
368
375
let params = Bound_parameters. to_list params in
369
376
let alloc_modes =
@@ -380,7 +387,7 @@ let add_parameters_with_unknown_types ?alloc_modes ?name_mode t params =
380
387
ListLabels. map2 params alloc_modes ~f: (fun param alloc_mode ->
381
388
T. unknown_with_subkind ~alloc_mode (BP. kind param))
382
389
in
383
- add_parameters ?name_mode t params' ~param_types
390
+ add_parameters ~extra ?name_mode t params' ~param_types
384
391
385
392
let mark_parameters_as_toplevel t params =
386
393
let variables_defined_at_toplevel =
0 commit comments