diff options
author | Jacques Garrigue <garrigue@math.nagoya-u.ac.jp> | 2020-11-20 16:29:23 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-20 16:29:23 +0900 |
commit | b47c34912c4fb8494d91245bbf7983b87884efb7 (patch) | |
tree | d869790bc339d82d43d5d1a4207ebdeca5fcad35 /typing/types.ml | |
parent | 547f9b8126fbb558de184a3424b0fc22a3d57f27 (diff) | |
download | ocaml-b47c34912c4fb8494d91245bbf7983b87884efb7.tar.gz |
Mark datatypes as injective in recursive module approximations (#10029)
Diffstat (limited to 'typing/types.ml')
-rw-r--r-- | typing/types.ml | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/typing/types.ml b/typing/types.ml index 9d0817c09d..d723a30420 100644 --- a/typing/types.ml +++ b/typing/types.ml @@ -187,8 +187,9 @@ module Variance = struct let conjugate v = swap May_pos May_neg (swap Pos Neg v) let get_upper v = (mem May_pos v, mem May_neg v) let get_lower v = (mem Pos v, mem Neg v, mem Inv v, mem Inj v) - let unknown_signature ~arity = - Misc.replicate_list unknown arity + let unknown_signature ~injective ~arity = + let v = if injective then set Inj true unknown else unknown in + Misc.replicate_list v arity end module Separability = struct |