Fix the type_expr loader in OCaml 4.14 and later #1173
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently, generating documentation from ml files
makes odoc misprint equal type variables as distinc type variables:
starting from OCaml 4.14 .
This issue stems from the uses of physical equalities on non-representative type expressions in the name map of the type expression loader of odoc. Consequently, different type nodes are attributed different names by odoc, even if they belong to the same class of equal-after-unification type nodes.
This issue typically doesn't arise when using mli files, because then we read source type expressions directly, without doing any unification (in most cases?).
This PR fixes this issue by ensuring that the naming maps only use representative type expressions.
Fortunately, this requires mostly tweaks to the
Compat
module.