Module Flambda2_nominal.Name_occurrences
A structure for counting name-like entities that occur free in terms or types.
val empty : Flambda2_nominal.Name_occurrences.tval is_empty : Flambda2_nominal.Name_occurrences.t -> boolval print :
Stdlib.Format.formatter ->
Flambda2_nominal.Name_occurrences.t ->
unitval equal :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_nominal.Name_occurrences.t ->
boolval apply_renaming :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_nominal.Renaming.t ->
Flambda2_nominal.Name_occurrences.tinclude Flambda2_nominal.Contains_ids.S
with type t := Flambda2_nominal.Name_occurrences.t
val ids_for_export :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_nominal.Ids_for_export.tGather all table identifiers to export them.
val affected_by_renaming :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_nominal.Renaming.t ->
boolTrue if and only if not (equal (apply_renaming t renaming) t)
val singleton_continuation :
Flambda2_identifiers.Continuation.t ->
Flambda2_nominal.Name_occurrences.tval singleton_continuation_in_trap_action :
Flambda2_identifiers.Continuation.t ->
Flambda2_nominal.Name_occurrences.tval add_continuation :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Continuation.t ->
has_traps:bool ->
Flambda2_nominal.Name_occurrences.tval count_continuation :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Continuation.t ->
Flambda2_nominal.Num_occurrences.tval continuation_is_applied_with_traps :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Continuation.t ->
boolval count_variable :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Variable.t ->
Flambda2_nominal.Num_occurrences.tval count_variable_normal_mode :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Variable.t ->
Flambda2_nominal.Num_occurrences.tval singleton_variable :
Flambda2_identifiers.Variable.t ->
Flambda2_nominal.Name_mode.t ->
Flambda2_nominal.Name_occurrences.tval add_function_slot_in_projection :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Function_slot.t ->
Flambda2_nominal.Name_mode.t ->
Flambda2_nominal.Name_occurrences.tval add_value_slot_in_projection :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Value_slot.t ->
Flambda2_nominal.Name_mode.t ->
Flambda2_nominal.Name_occurrences.tval add_function_slot_in_declaration :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Function_slot.t ->
Flambda2_nominal.Name_mode.t ->
Flambda2_nominal.Name_occurrences.tval add_value_slot_in_declaration :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Value_slot.t ->
Flambda2_nominal.Name_mode.t ->
Flambda2_nominal.Name_occurrences.tval add_function_slot_in_types :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Function_slot.t ->
Flambda2_nominal.Name_occurrences.tClosure_variables and function slots in types count as both projection and declaration
val add_value_slot_in_types :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Value_slot.t ->
Flambda2_nominal.Name_occurrences.tval singleton_code_id :
Flambda2_identifiers.Code_id.t ->
Flambda2_nominal.Name_mode.t ->
Flambda2_nominal.Name_occurrences.tval add_code_id :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Code_id.t ->
Flambda2_nominal.Name_mode.t ->
Flambda2_nominal.Name_occurrences.tIf the use of the code ID is in a "newer version of" field, use add_newer_version_of_code_id, not this function -- see below.
val add_newer_version_of_code_id :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Code_id.t ->
Flambda2_nominal.Name_mode.t ->
Flambda2_nominal.Name_occurrences.tadd_newer_version_of_code_id registers a use of a code ID occurring in a "newer version of" field (e.g. in Flambda_static.Static_part.code).
val singleton_name :
Flambda2_identifiers.Name.t ->
Flambda2_nominal.Name_mode.t ->
Flambda2_nominal.Name_occurrences.tval singleton_symbol :
Flambda2_identifiers.Symbol.t ->
Flambda2_nominal.Name_mode.t ->
Flambda2_nominal.Name_occurrences.tval create_variables :
Flambda2_identifiers.Variable.Set.t ->
Flambda2_nominal.Name_mode.t ->
Flambda2_nominal.Name_occurrences.tval create_names :
Flambda2_identifiers.Name.Set.t ->
Flambda2_nominal.Name_mode.t ->
Flambda2_nominal.Name_occurrences.tval diff :
Flambda2_nominal.Name_occurrences.t ->
without:Flambda2_nominal.Name_occurrences.t ->
Flambda2_nominal.Name_occurrences.tdiff t1 ~without:t2 removes from t1 all those names that occur in t2.
The number of occurrences of any names in the return value will be exactly the same as in t1.
Note that a code ID in t2 will not only be removed from the code ID set in t1 but also the newer-version-of code ID set in t1.
val union_list :
Flambda2_nominal.Name_occurrences.t list ->
Flambda2_nominal.Name_occurrences.tval subset_domain :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_nominal.Name_occurrences.t ->
boolsubset_domain t1 t2 is the usual "set subset" test on the names occurring in t1 and t2. The numbers of occurrences and the name_modes of those occurrences are ignored.
val inter_domain_is_non_empty :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_nominal.Name_occurrences.t ->
boolval no_variables : Flambda2_nominal.Name_occurrences.t -> boolval no_continuations : Flambda2_nominal.Name_occurrences.t -> boolval continuations :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Continuation.Set.tval continuations_with_traps :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Continuation.Set.tval continuations_including_in_trap_actions :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Continuation.Set.tval function_slots_in_normal_projections :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Function_slot.Set.tval all_function_slots_at_normal_mode :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Function_slot.Set.tval value_slots_in_normal_projections :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Value_slot.Set.tval all_value_slots_at_normal_mode :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Value_slot.Set.tval symbols :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Symbol.Set.tval code_ids :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Code_id.Set.tval newer_version_of_code_ids :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Code_id.Set.tval restrict_to_value_slots_and_function_slots :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_nominal.Name_occurrences.tval code_ids_and_newer_version_of_code_ids :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Code_id.Set.tval without_code_ids :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_nominal.Name_occurrences.tval with_only_variables :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_nominal.Name_occurrences.tval with_only_names :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_nominal.Name_occurrences.tval with_only_names_and_code_ids_promoting_newer_version_of :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_nominal.Name_occurrences.tThe value returned by this function only records occurrences in two fields:
- names, as per the input
- code IDs, containing *both* the code IDs and the "newer version of" code IDs from the input.
The "newer version of" code IDs field in the returned value will always be empty.
val without_names_or_continuations :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_nominal.Name_occurrences.tval mem_var :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Variable.t ->
boolval mem_symbol :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Symbol.t ->
boolval mem_name :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Name.t ->
boolval mem_code_id :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Code_id.t ->
boolval mem_continuation :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Continuation.t ->
boolval value_slot_is_used_or_imported :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Value_slot.t ->
boolval remove_var :
Flambda2_nominal.Name_occurrences.t ->
var:Flambda2_identifiers.Variable.t ->
Flambda2_nominal.Name_occurrences.tval remove_var_opt :
Flambda2_nominal.Name_occurrences.t ->
var:Flambda2_identifiers.Variable.t option ->
Flambda2_nominal.Name_occurrences.tval remove_code_id_or_symbol :
Flambda2_nominal.Name_occurrences.t ->
code_id_or_symbol:Flambda2_identifiers.Code_id_or_symbol.t ->
Flambda2_nominal.Name_occurrences.tval remove_continuation :
Flambda2_nominal.Name_occurrences.t ->
continuation:Flambda2_identifiers.Continuation.t ->
Flambda2_nominal.Name_occurrences.tval greatest_name_mode_var :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_identifiers.Variable.t ->
Flambda2_nominal.Name_mode.Or_absent.tval downgrade_occurrences_at_strictly_greater_name_mode :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_nominal.Name_mode.t ->
Flambda2_nominal.Name_occurrences.tval fold_names :
Flambda2_nominal.Name_occurrences.t ->
init:'a ->
f:('a -> Flambda2_identifiers.Name.t -> 'a) ->
'aval fold_variables :
Flambda2_nominal.Name_occurrences.t ->
init:'a ->
f:('a -> Flambda2_identifiers.Variable.t -> 'a) ->
'aval fold_continuations_including_in_trap_actions :
Flambda2_nominal.Name_occurrences.t ->
init:'a ->
f:('a -> Flambda2_identifiers.Continuation.t -> 'a) ->
'aval fold_code_ids :
Flambda2_nominal.Name_occurrences.t ->
init:'a ->
f:('a -> Flambda2_identifiers.Code_id.t -> 'a) ->
'aval increase_counts :
Flambda2_nominal.Name_occurrences.t ->
Flambda2_nominal.Name_occurrences.t