Zap modalities to identity for mli-less files #3282
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.
For
.ml
files without a corresponding.mli
, previously we thought the generated.cmi
will only be on the LHS of inclusion check, and therefore it's always better to infer the strongest modalities. This is obviously wrong, because another module could invokemodule type of
on the.cmi
and use it on RHS of inclusion check. This has broken legacy code in practice.This PR therefore zaps modalitites to identity, which is more legacy compatible.
Side note: In the future we should add two flags to override the default behavior:
cmx
. It should error if.mli
exists:module type of
, to indicate the direction of zapping when calculating the module type. It should error if the module already has a user-annotated module type: