diff options
| author | Kazuhiko Sakaguchi | 2021-03-10 13:07:58 +0900 |
|---|---|---|
| committer | Kazuhiko Sakaguchi | 2021-03-13 02:09:53 +0900 |
| commit | 27270870ea75e77808d8e1b4af4998c0b57255ae (patch) | |
| tree | 4b56407c589301b70d4153668184e64d0b5a9a19 /pretyping/coercionops.mli | |
| parent | d33266649d285b7d8ba5a7093319faa6132d6bc9 (diff) | |
Minimize the set of multiple inheritance paths to check for conversion
The table of coercion classes (`class_tab`) has been extended with information
about reachability. The conversion checking of a pair of multiple inheritance
paths (of coercions) will be skipped if these paths can be reduced to smaller
adjoining pairs of multiple inheritance paths, and this reduction will be
determined based on that reachability information.
Diffstat (limited to 'pretyping/coercionops.mli')
| -rw-r--r-- | pretyping/coercionops.mli | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/pretyping/coercionops.mli b/pretyping/coercionops.mli index fb5621dd3a..9236167021 100644 --- a/pretyping/coercionops.mli +++ b/pretyping/coercionops.mli @@ -31,9 +31,19 @@ val subst_cl_typ : env -> substitution -> cl_typ -> cl_typ (** Comparison of [cl_typ] *) val cl_typ_ord : cl_typ -> cl_typ -> int +module ClTypSet : Set.S with type elt = cl_typ + (** This is the type of infos for declared classes *) type cl_info_typ = { - cl_param : int } + (* The number of parameters of the coercion class. *) + cl_param : int; + (* The sets of coercion classes respectively reachable from and to the + coercion class. *) + cl_reachable_from : ClTypSet.t; + cl_reachable_to : ClTypSet.t; + (* The representative class of the strongly connected component. *) + cl_repr : cl_typ; +} (** This is the type of coercion kinds *) type coe_typ = GlobRef.t |
