diff --git a/ocaml/boot/ocamlc b/ocaml/boot/ocamlc index 8635bc10ac1..6620116ad3a 100755 Binary files a/ocaml/boot/ocamlc and b/ocaml/boot/ocamlc differ diff --git a/ocaml/boot/ocamllex b/ocaml/boot/ocamllex index dd4ef8c3c13..0fe92796177 100755 Binary files a/ocaml/boot/ocamllex and b/ocaml/boot/ocamllex differ diff --git a/ocaml/testsuite/tests/typing-missing-cmi/test.compilers.reference b/ocaml/testsuite/tests/typing-missing-cmi/test.compilers.reference index f0dd8a7efd1..b75953604d6 100644 --- a/ocaml/testsuite/tests/typing-missing-cmi/test.compilers.reference +++ b/ocaml/testsuite/tests/typing-missing-cmi/test.compilers.reference @@ -3,6 +3,6 @@ File "main.ml", line 1, characters 8-11: ^^^ Error: This expression has type M.a but an expression was expected of type ('a : value) - M.a has an unknown layout, which might not be representable. + M.a has an unknown layout, which might not be a sublayout of value. No .cmi file found containing M.a. Hint: Adding "m" to your dependencies might help. diff --git a/ocaml/typing/ctype.ml b/ocaml/typing/ctype.ml index 7fd0744b331..87459be012b 100644 --- a/ocaml/typing/ctype.ml +++ b/ocaml/typing/ctype.ml @@ -3767,7 +3767,8 @@ let filter_arrow env t l ~force_tpoly = newty2 ~level (* CR layouts v5: Change the Layout.value when option can hold non-values. *) - (Tconstr(Predef.path_option,[newvar2 level Layout.value], + (Tconstr(Predef.path_option, + [newvar2 level (Layout.value ~why:Type_argument)], ref Mnil)) else newvar2 level l1