From cd418bfcbde3d769c267f2fab81b2f0a020fb036 Mon Sep 17 00:00:00 2001 From: Florian Angeletti Date: Tue, 19 Oct 2021 14:59:32 +0200 Subject: [PATCH 1/9] Use babel to allow underscore in labels --- api_docgen/alldoc.tex | 4 ++-- manual/src/manual.tex | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/api_docgen/alldoc.tex b/api_docgen/alldoc.tex index ce782e728524..2027c3663b54 100644 --- a/api_docgen/alldoc.tex +++ b/api_docgen/alldoc.tex @@ -1,10 +1,8 @@ \documentclass{book} - \usepackage[colorlinks=true,breaklinks=true]{hyperref} \usepackage{color} \usepackage{lmodern} \usepackage[T1]{fontenc} -\usepackage[strings,nohyphen]{underscore} \input{ifocamldoc} \ifocamldoc \usepackage{ocamldoc} @@ -67,6 +65,8 @@ \else \newcommand{\docitem}[2]{\input{#1/#2}} \fi +\usepackage[english]{babel} +\usepackage[strings,nohyphen]{underscore} \begin{document} \chapter{Stdlib} diff --git a/manual/src/manual.tex b/manual/src/manual.tex index 96e9165331e1..0ad0915e855c 100644 --- a/manual/src/manual.tex +++ b/manual/src/manual.tex @@ -185,6 +185,9 @@ % Make _ a normal character in text mode % it must be the last package included \usepackage[strings,nohyphen]{underscore} +% Babel enables a finer control of the catcode of '_' +% and ensures that '_' is allowed in labels and references. +\usepackage[english]{babel} %\makeatletter \def\@wrindex#1#2{\xdef \@indexfile{\csname #1@idxfile\endcsname}\@@wrindex#2||\\}\makeatother From bf0859daecc9d4ca06b9d925d66bb91f5a8e4c8a Mon Sep 17 00:00:00 2001 From: Wiktor Kuchta <35867657+wiktorkuchta@users.noreply.github.com> Date: Sun, 3 Oct 2021 12:07:54 +0200 Subject: [PATCH 2/9] webman: Use li::marker for coloring bullets --- Changes | 4 ++++ manual/src/html_processing/scss/_common.scss | 11 +++-------- manual/src/html_processing/scss/manual.scss | 8 +++----- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/Changes b/Changes index 1aa40256fe01..5a3a72476b26 100644 --- a/Changes +++ b/Changes @@ -148,6 +148,10 @@ Working version (Nicolás Ojeda Bär, report by Daniel Bünzli, review by David Allsopp, Sébastien Hinderer, and Daniel Bünzli) +- #10671, #10672: webman: Fix misalignments in unordered lists by changing the + CSS for coloring bullets + (Wiktor Kuchta, review by Florian Angeletti) + ### Compiler user-interface and warnings: - #10328: Give more precise error when disambiguation could not possibly work. diff --git a/manual/src/html_processing/scss/_common.scss b/manual/src/html_processing/scss/_common.scss index 3d721de0a2fa..2be8ada94238 100644 --- a/manual/src/html_processing/scss/_common.scss +++ b/manual/src/html_processing/scss/_common.scss @@ -249,14 +249,9 @@ html { margin-left:-1em } -@mixin disc { - content:"●"; - color:$logocolor; - margin-right:4px; - margin-left:-1em; - font-family: $font-sans; - font-size:13px; - vertical-align:1px; +@mixin colored-disc-marker { + list-style-type: disc; + li::marker { color:$logocolor; } } @mixin diamond { diff --git a/manual/src/html_processing/scss/manual.scss b/manual/src/html_processing/scss/manual.scss index d9db692ffb43..c21cb177a4c4 100644 --- a/manual/src/html_processing/scss/manual.scss +++ b/manual/src/html_processing/scss/manual.scss @@ -23,7 +23,7 @@ } } ul{list-style:none;} - ul.itemize li::before{@include disc;} + ul.itemize {@include colored-disc-marker;} /* When the TOC is repeated in the main content */ ul.ul-content { @@ -44,7 +44,6 @@ ul{ list-style: none; li { - margin-left: 0.5ex; span { color:#c88b5f; } @@ -54,9 +53,8 @@ } } /* only for Contents/Foreword in index.html: */ - ul.ul-content li::before{ - @include disc; - margin-left: 0; + ul.ul-content { + @include colored-disc-marker; } /* table of contents: (manual.001.html): */ ul.toc ul.toc ul.toc{ From 5a44941190747d12da27240a7f8ca1ea82b38c54 Mon Sep 17 00:00:00 2001 From: Wiktor Kuchta <35867657+wiktorkuchta@users.noreply.github.com> Date: Sat, 17 Jul 2021 16:13:10 +0200 Subject: [PATCH 3/9] Mention the help directive on toplevel startup --- Changes | 3 +++ toplevel/toploop.ml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Changes b/Changes index 02f8e7c6076d..a866a0cb679d 100644 --- a/Changes +++ b/Changes @@ -117,6 +117,9 @@ Working version - #10565: Toplevel value printing: truncate strings only after 8 bytes. (Wiktor Kuchta, review by Xavier Leroy) +- #10527: Show "#help;; for help" at toplevel startup + (Wiktor Kuchta, review by David Allsopp and Florian Angeletti) + ### Debugging: - #10517, #10594: when running ocamldebug on a program linked with the diff --git a/toplevel/toploop.ml b/toplevel/toploop.ml index 9feac35660a7..62a5b0023e8a 100644 --- a/toplevel/toploop.ml +++ b/toplevel/toploop.ml @@ -187,7 +187,7 @@ let loop ppf = Clflags.debug := true; Location.formatter_for_warnings := ppf; if not !Clflags.noversion then - fprintf ppf " OCaml version %s%s%s@.@." + fprintf ppf "OCaml version %s%s%s@.Enter #help;; for help.@.@." Config.version (if Topeval.implementation_label = "" then "" else " - ") Topeval.implementation_label; From 37298b0b9f3ee6a48b6eaae2f981e12cc4f9a665 Mon Sep 17 00:00:00 2001 From: Vincent Laviron Date: Tue, 5 Oct 2021 10:50:54 +0200 Subject: [PATCH 4/9] Enforce boolean Lifthenelse in native mode --- asmcomp/cmm_helpers.ml | 1 + lambda/matching.ml | 21 +++++++++++++++++---- lambda/simplif.ml | 4 +++- lambda/switch.ml | 18 +++++++++++++++--- lambda/switch.mli | 1 + middle_end/closure/closure.ml | 16 +++++++++++----- 6 files changed, 48 insertions(+), 13 deletions(-) diff --git a/asmcomp/cmm_helpers.ml b/asmcomp/cmm_helpers.ml index a2b6076d45fc..7c5386da587e 100644 --- a/asmcomp/cmm_helpers.ml +++ b/asmcomp/cmm_helpers.ml @@ -1517,6 +1517,7 @@ struct let make_isout h arg = Cop (Ccmpa Clt, [h ; arg], Debuginfo.none) let make_isin h arg = Cop (Ccmpa Cge, [h ; arg], Debuginfo.none) let make_is_nonzero arg = arg + let arg_as_test arg = arg let make_if cond ifso ifnot = Cifthenelse (cond, Debuginfo.none, ifso, Debuginfo.none, ifnot, Debuginfo.none) diff --git a/lambda/matching.ml b/lambda/matching.ml index 07639abac84d..2b9a2fcec49b 100644 --- a/lambda/matching.ml +++ b/lambda/matching.ml @@ -2357,7 +2357,15 @@ module SArg = struct let make_isin h arg = Lprim (Pnot, [ make_isout h arg ], Loc_unknown) - let make_is_nonzero arg = arg + let make_is_nonzero arg = + if !Clflags.native_code then + Lprim (Pintcomp Cne, + [arg; Lconst (Const_base (Const_int 0))], + Loc_unknown) + else + arg + + let arg_as_test arg = arg let make_if cond ifso ifnot = Lifthenelse (cond, ifso, ifnot) @@ -2828,9 +2836,14 @@ let combine_constructor loc arg pat_env cstr partial ctx def (cstr.cstr_consts, cstr.cstr_nonconsts, consts, nonconsts) with | 1, 1, [ (0, act1) ], [ (0, act2) ] -> - (* Typically, match on lists, will avoid isint primitive in that - case *) - Lifthenelse (arg, act2, act1) + if !Clflags.native_code then + Lifthenelse(Lprim (Pisint, [ arg ], loc), act1, act2) + else + (* PR#10681: we use [arg] directly as the test here; + it generates better bytecode for this common case + (typically options and lists), but would prevent + some optimizations with the native compiler. *) + Lifthenelse (arg, act2, act1) | n, 0, _, [] -> (* The type defines constant constructors only *) call_switcher loc fail_opt arg 0 (n - 1) consts diff --git a/lambda/simplif.ml b/lambda/simplif.ml index e149df9e47e0..033341f3ebe0 100644 --- a/lambda/simplif.ml +++ b/lambda/simplif.ml @@ -712,7 +712,9 @@ and list_emit_tail_infos is_tail = let split_default_wrapper ~id:fun_id ~kind ~params ~return ~body ~attr ~loc = let rec aux map = function - | Llet(Strict, k, id, (Lifthenelse(Lvar optparam, _, _) as def), rest) when + | Llet(Strict, k, id, + (Lifthenelse(Lprim (Pisint, [Lvar optparam], _), _, _) as def), + rest) when Ident.name optparam = "*opt*" && List.mem_assoc optparam params && not (List.mem_assoc optparam map) -> diff --git a/lambda/switch.ml b/lambda/switch.ml index faab6c01f3fa..53115892d614 100644 --- a/lambda/switch.ml +++ b/lambda/switch.ml @@ -126,6 +126,7 @@ sig val make_isout : arg -> arg -> test val make_isin : arg -> arg -> test val make_is_nonzero : arg -> test + val arg_as_test : arg -> test val make_if : test -> act -> act -> act val make_switch : loc -> arg -> int array -> act array -> act @@ -191,6 +192,9 @@ let prerr_inter i = Printf.fprintf stderr and get_low cases i = let r,_,_ = cases.(i) in r + and get_high cases i = + let _,r,_ = cases.(i) in + r type ctests = { mutable n : int ; @@ -578,6 +582,9 @@ let rec pkey chan = function let make_if_nonzero arg ifso ifnot = Arg.make_if (Arg.make_is_nonzero arg) ifso ifnot + let make_if_bool arg ifso ifnot = + Arg.make_if (Arg.arg_as_test arg) ifso ifnot + let do_make_if_out h arg ifso ifno = Arg.make_if (Arg.make_isout h arg) ifso ifno @@ -667,9 +674,14 @@ let rec pkey chan = function and right = {s with cases=right} in if i=1 && (lim+ctx.off)=1 && get_low cases 0+ctx.off=0 then - make_if_nonzero - ctx.arg - (c_test ctx right) (c_test ctx left) + if lcases = 2 && get_high cases 1+ctx.off = 1 then + make_if_bool + ctx.arg + (c_test ctx right) (c_test ctx left) + else + make_if_nonzero + ctx.arg + (c_test ctx right) (c_test ctx left) else if less_tests cright cleft then make_if_lt ctx.arg (lim+ctx.off) diff --git a/lambda/switch.mli b/lambda/switch.mli index 89dfd696596d..96fbfcba439c 100644 --- a/lambda/switch.mli +++ b/lambda/switch.mli @@ -91,6 +91,7 @@ module type S = val make_isout : arg -> arg -> test val make_isin : arg -> arg -> test val make_is_nonzero : arg -> test + val arg_as_test : arg -> test val make_if : test -> act -> act -> act (* construct an actual switch : diff --git a/middle_end/closure/closure.ml b/middle_end/closure/closure.ml index 4a9e63581769..b036b0411480 100644 --- a/middle_end/closure/closure.ml +++ b/middle_end/closure/closure.ml @@ -483,6 +483,8 @@ let simplif_prim_pure ~backend fpc p (args, approxs) dbg = make_const (List.nth l n) | Pfield n, [ Uprim(P.Pmakeblock _, ul, _) ], [approx] when n < List.length ul -> + (* This case is particularly useful for removing allocations + for optional parameters *) (List.nth ul n, field_approx n approx) (* Strings *) | (Pstringlength | Pbyteslength), @@ -490,6 +492,10 @@ let simplif_prim_pure ~backend fpc p (args, approxs) dbg = [ Value_const(Uconst_ref(_, Some (Uconst_string s))) ] -> make_const_int (String.length s) (* Kind test *) + | Pisint, [ Uprim(P.Pmakeblock _, _, _) ], _ -> + (* This case is particularly useful for removing allocations + for optional parameters *) + make_const_bool false | Pisint, _, [a1] -> begin match a1 with | Value_const(Uconst_int _) -> make_const_bool true @@ -667,8 +673,6 @@ let rec substitute loc ((backend, fpc) as st) sb rn ulam = substitute loc st sb rn u2 else substitute loc st sb rn u3 - | Uprim(P.Pmakeblock _, _, _) -> - substitute loc st sb rn u2 | su1 -> Uifthenelse(su1, substitute loc st sb rn u2, substitute loc st sb rn u3) @@ -748,6 +752,11 @@ let bind_params { backend; mutable_vars; _ } loc fpc params args body = let u1, u2 = match VP.name p1, a1 with | "*opt*", Uprim(P.Pmakeblock(0, Immutable, kind), [a], dbg) -> + (* This parameter corresponds to an optional parameter, + and although it is used twice pushing the expression down + actually allows us to remove the allocation as it will + appear once under a Pisint primitive and once under a Pfield + primitive (see [simplif_prim_pure]) *) a, Uprim(P.Pmakeblock(0, Immutable, kind), [Uvar (VP.var p1')], dbg) | _ -> @@ -765,9 +774,6 @@ let bind_params { backend; mutable_vars; _ } loc fpc params args body = evaluation order (PR#2910). *) aux V.Map.empty (List.rev params) (List.rev args) body -(* Check if a lambda term is ``pure'', - that is without side-effects *and* not containing function definitions *) - let warning_if_forced_inline ~loc ~attribute warning = if attribute = Always_inline then Location.prerr_warning (Debuginfo.Scoped_location.to_location loc) From ff41359014aa0c2965c151c699bd888ea1478b87 Mon Sep 17 00:00:00 2001 From: Vincent Laviron Date: Tue, 5 Oct 2021 11:01:54 +0200 Subject: [PATCH 5/9] Enable if-then-else elimination in Cmmgen --- asmcomp/cmmgen.ml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/asmcomp/cmmgen.ml b/asmcomp/cmmgen.ml index 3876da2e605a..ac4f47771c87 100644 --- a/asmcomp/cmmgen.ml +++ b/asmcomp/cmmgen.ml @@ -609,8 +609,16 @@ let rec transl env e = let ifso_dbg = Debuginfo.none in let ifnot_dbg = Debuginfo.none in let dbg = Debuginfo.none in - transl_if env Unknown dbg cond - ifso_dbg (transl env ifso) ifnot_dbg (transl env ifnot) + let ifso = transl env ifso in + let ifnot = transl env ifnot in + let approx = + match ifso, ifnot with + | Cconst_int (1, _), Cconst_int (3, _) -> Then_false_else_true + | Cconst_int (3, _), Cconst_int (1, _) -> Then_true_else_false + | _, _ -> Unknown + in + transl_if env approx dbg cond + ifso_dbg ifso ifnot_dbg ifnot | Usequence(exp1, exp2) -> Csequence(remove_unit(transl env exp1), transl env exp2) | Uwhile(cond, body) -> From 848304c9dd980ea9805f0259f50222e6eaa2a7fa Mon Sep 17 00:00:00 2001 From: Vincent Laviron Date: Mon, 11 Oct 2021 11:48:43 +0200 Subject: [PATCH 6/9] Review: Document Switch.Make parameters --- lambda/switch.mli | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/lambda/switch.mli b/lambda/switch.mli index 96fbfcba439c..5744193751ab 100644 --- a/lambda/switch.mli +++ b/lambda/switch.mli @@ -84,15 +84,32 @@ module type S = (* Various constructors, for making a binder, adding one integer, etc. *) + + (* [bind arg cont] should bind the expression arg to a variable, + then call [cont] on that variable, and return the term made of + the binding and the result of the call. *) val bind : arg -> (arg -> act) -> act + (* [make_const n] generates a term for the integer constant [n] *) val make_const : int -> arg + (* [make_offset arg n] generates a term for adding the constant + integer [n] to the term [arg] *) val make_offset : arg -> int -> arg + (* [make_prim p args] generates a test using the primitive operation [p] + applied to arguments [args] *) val make_prim : primitive -> arg list -> test + (* [make_isout h arg] generates a test that holds when [arg] is out of + the interval [0, h] *) val make_isout : arg -> arg -> test + (* [make_isin h arg] generates a test that holds when [arg] is in + the interval [0, h] *) val make_isin : arg -> arg -> test + (* [make_is_nonzero arg] generates a test that holds when [arg] is any + value except 0 *) val make_is_nonzero : arg -> test + (* [arg_as_test arg] casts [arg], known to be either 0 or 1, + to a boolean test *) val arg_as_test : arg -> test - + (* [make_if cond ifso ifnot] generates a conditional branch *) val make_if : test -> act -> act -> act (* construct an actual switch : make_switch arg cases acts From a58ec8866f68aaa59158f3ddcdd4c0cff532d234 Mon Sep 17 00:00:00 2001 From: Vincent Laviron Date: Tue, 19 Oct 2021 17:08:26 +0200 Subject: [PATCH 7/9] Add comment on Simplif.split_default_wrapper's pattern matching --- lambda/simplif.ml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lambda/simplif.ml b/lambda/simplif.ml index 033341f3ebe0..4d3430dca1e7 100644 --- a/lambda/simplif.ml +++ b/lambda/simplif.ml @@ -712,6 +712,21 @@ and list_emit_tail_infos is_tail = let split_default_wrapper ~id:fun_id ~kind ~params ~return ~body ~attr ~loc = let rec aux map = function + (* When compiling [fun ?(x=expr) -> body], this is first translated + to: + [fun *opt* -> + let x = + match *opt* with + | None -> expr + | Some *sth* -> *sth* + in + body] + We want to detect the let binding to put it into the wrapper instead of + the inner function. + We need to find which optional parameter the binding corresponds to, + which is why we need a deep pattern matching on the expected result of + the pattern-matching compiler for options. + *) | Llet(Strict, k, id, (Lifthenelse(Lprim (Pisint, [Lvar optparam], _), _, _) as def), rest) when From 05faf05a106b452e2cba8dc94b30392316a9d911 Mon Sep 17 00:00:00 2001 From: Vincent Laviron Date: Mon, 11 Oct 2021 11:50:34 +0200 Subject: [PATCH 8/9] Changes --- Changes | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Changes b/Changes index 1aa40256fe01..5aaa947079cf 100644 --- a/Changes +++ b/Changes @@ -45,6 +45,9 @@ Working version are used for passing arguments that do not fit in registers. (Xavier Leroy, review by Vincent Laviron) +- #10681: Enforce boolean conditions for the native backend + (Vincent Laviron, review by Gabriel Scherer) + ### Standard library: * #10622: Annotate `Uchar.t` with immediate attribute From 2250fd8a2218796c07b0a25f184cdc682e4695ba Mon Sep 17 00:00:00 2001 From: Jacques Garrigue Date: Fri, 22 Oct 2021 09:02:35 +0900 Subject: [PATCH 9/9] abstract row_field (#10627) Co-authored-by: Takafumi Saikawa --- Changes | 13 +++ boot/ocamlc | Bin 2935693 -> 2937460 bytes lambda/matching.ml | 4 +- toplevel/genprintval.ml | 2 +- typing/btype.ml | 12 +-- typing/ctype.ml | 156 ++++++++++++++++---------------- typing/includecore.ml | 4 +- typing/parmatch.ml | 16 ++-- typing/printtyp.ml | 27 +++--- typing/typecore.ml | 46 +++++----- typing/typedecl.ml | 4 +- typing/typedecl_separability.ml | 11 +-- typing/typedecl_variance.ml | 2 +- typing/types.ml | 139 ++++++++++++++++++++-------- typing/types.mli | 51 ++++++++--- typing/typetexp.ml | 25 ++--- 16 files changed, 307 insertions(+), 205 deletions(-) diff --git a/Changes b/Changes index c173fc9156f3..81f11e00ecd3 100644 --- a/Changes +++ b/Changes @@ -213,6 +213,12 @@ Working version (Jacques Garrigue and Takafumi Saikawa, review by Thomas Refis and Florian Angeletti) +* #10627: Make row_field abstract + Completes #10474 by making row_field abstract too. + An immutable view row_field_view is provided, and one converts between it + and row_field via inj_row_field and row_field_repr. + (Jacques Garrigue and Takafumi Saikawa, review by Florian Angeletti) + - #10433: Remove the distinction between 32-bit aligned and 64-bit aligned 64-bit floats in Cmm.memory_chunk. (Greta Yorsh, review by Xavier Leroy) @@ -755,6 +761,13 @@ OCaml 4.13.0 (24 September 2021) - #10327: Add a subdirectories variable and a copy action to ocamltest (Sébastien Hinderer, review by David Allsopp) +* #10337: Normalize type_expr nodes on access + One should now use accessors such as get_desc and get_level to access fields + of type_expr, rather than calling manually Btype.repr (which is now hidden + in Types.Transient_expr). + (Jacques Garrigue and Takafumi Saikawa, + review by Florian Angeletti and Gabriel Radanne) + - #10358: Use a hash table for the load path. (Leo White, review by Gabriel Scherer) diff --git a/boot/ocamlc b/boot/ocamlc index 9f364c38c404cf65f652814194e823b277eae214..7eb718f4ae8e48fceff43febcfcf9cfbc0b43e70 100755 GIT binary patch delta 129931 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�c1oHp8)obzBhO!aHk49ZIMDxT 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�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 delta 128819 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 diff --git a/lambda/matching.ml b/lambda/matching.ml index 2b9a2fcec49b..7e7fe143350d 100644 --- a/lambda/matching.ml +++ b/lambda/matching.ml @@ -1807,7 +1807,7 @@ let divide_variant ~scopes row ctx { cases = cl; args; default = def } = in let head = Simple.head p in let variants = divide rem in - if row_field lab row = Rabsent then + if row_field_repr (get_row_field lab row) = Rabsent then variants else let tag = Btype.hash_variant lab in @@ -2908,7 +2908,7 @@ let combine_variant loc row arg partial ctx def (tag_lambda_list, total1, _pats) (fun (_, f) -> match row_field_repr f with | Rabsent - | Reither (true, _ :: _, _, _) -> + | Reither (true, _ :: _, _) -> () | _ -> incr num_constr) (row_fields row) diff --git a/toplevel/genprintval.ml b/toplevel/genprintval.ml index 241c19e9a373..e2274a577c9f 100644 --- a/toplevel/genprintval.ml +++ b/toplevel/genprintval.ml @@ -452,7 +452,7 @@ module Make(O : OBJ)(EVP : EVALPATH with type valu = O.t) = struct | (l, f) :: fields -> if Btype.hash_variant l = tag then match row_field_repr f with - | Rpresent(Some ty) | Reither(_,[ty],_,_) -> + | Rpresent(Some ty) | Reither(_,[ty],_) -> let args = nest tree_of_val (depth - 1) (O.field obj 1) ty in diff --git a/typing/btype.ml b/typing/btype.ml index e06272f9df72..8c5e28bf445b 100644 --- a/typing/btype.ml +++ b/typing/btype.ml @@ -240,7 +240,7 @@ let fold_row f init row = (fun init (_, fi) -> match row_field_repr fi with | Rpresent(Some ty) -> f init ty - | Reither(_, tl, _, _) -> List.fold_left f init tl + | Reither(_, tl, _) -> List.fold_left f init tl | _ -> init) init (row_fields row) @@ -420,13 +420,13 @@ let copy_row f fixed row keep more = let fields = List.map (fun (l, fi) -> l, match row_field_repr fi with - | Rpresent(Some ty) -> Rpresent(Some(f ty)) - | Reither(c, tl, m, e) -> - let e = if keep then e else ref None in + | Rpresent oty -> rf_present (Option.map f oty) + | Reither(c, tl, m) -> + let use_ext_of = if keep then Some fi else None in let m = if is_fixed row then fixed else m in let tl = List.map f tl in - Reither(c, tl, m, e) - | _ -> fi) + rf_either tl ?use_ext_of ~no_arg:c ~matched:m + | Rabsent -> rf_absent) orig_fields in let name = match orig_name with diff --git a/typing/ctype.ml b/typing/ctype.ml index ca90ddd744ed..a25b2ee14798 100644 --- a/typing/ctype.ml +++ b/typing/ctype.ml @@ -410,7 +410,8 @@ let rec filter_row_fields erase = function let fi = filter_row_fields erase fi in match row_field_repr f with Rabsent -> fi - | Reither(_,_,false,e) when erase -> set_row_field e Rabsent; fi + | Reither(_,_,false) when erase -> + link_row_field_ext ~inside:f rf_absent; fi | _ -> p :: fi (**************************************) @@ -2310,16 +2311,16 @@ and mcomp_row type_pairs env row1 row2 = List.iter (fun (_,f1,f2) -> match row_field_repr f1, row_field_repr f2 with - | Rpresent None, (Rpresent (Some _) | Reither (_, _::_, _, _) | Rabsent) - | Rpresent (Some _), (Rpresent None | Reither (true, _, _, _) | Rabsent) - | (Reither (_, _::_, _, _) | Rabsent), Rpresent None - | (Reither (true, _, _, _) | Rabsent), Rpresent (Some _) -> + | Rpresent None, (Rpresent (Some _) | Reither (_, _::_, _) | Rabsent) + | Rpresent (Some _), (Rpresent None | Reither (true, _, _) | Rabsent) + | (Reither (_, _::_, _) | Rabsent), Rpresent None + | (Reither (true, _, _) | Rabsent), Rpresent (Some _) -> raise Incompatible | Rpresent(Some t1), Rpresent(Some t2) -> mcomp type_pairs env t1 t2 - | Rpresent(Some t1), Reither(false, tl2, _, _) -> + | Rpresent(Some t1), Reither(false, tl2, _) -> List.iter (mcomp type_pairs env t1) tl2 - | Reither(false, tl1, _, _), Rpresent(Some t2) -> + | Reither(false, tl1, _), Rpresent(Some t2) -> List.iter (mcomp type_pairs env t2) tl1 | _ -> ()) pairs @@ -3017,7 +3018,6 @@ and unify_row env row1 row2 = end and unify_row_field env fixed1 fixed2 rm1 rm2 l f1 f2 = - let f1 = row_field_repr f1 and f2 = row_field_repr f2 in let if_not_fixed (pos,fixed) f = match fixed with | None -> f () @@ -3029,16 +3029,17 @@ and unify_row_field env fixed1 fixed2 rm1 rm2 l f1 f2 = | None, None -> false | _ -> true in if f1 == f2 then () else - match f1, f2 with + match row_field_repr f1, row_field_repr f2 with Rpresent(Some t1), Rpresent(Some t2) -> unify env t1 t2 | Rpresent None, Rpresent None -> () - | Reither(c1, tl1, m1, e1), Reither(c2, tl2, m2, e2) -> - if e1 == e2 then () else - if either_fixed && not (c1 || c2) + | Reither(c1, tl1, m1), Reither(c2, tl2, m2) -> + if eq_row_field_ext f1 f2 then () else + let no_arg = c1 || c2 and matched = m1 || m2 in + if either_fixed && not no_arg && List.length tl1 = List.length tl2 then begin (* PR#7496 *) - let f = Reither (c1 || c2, [], m1 || m2, ref None) in - set_row_field e1 f; set_row_field e2 f; + let f = rf_either [] ~no_arg ~matched in + link_row_field_ext ~inside:f1 f; link_row_field_ext ~inside:f2 f; List.iter2 (unify env) tl1 tl2 end else let redo = @@ -3046,9 +3047,9 @@ and unify_row_field env fixed1 fixed2 rm1 rm2 l f1 f2 = !rigid_variants && (List.length tl1 = 1 || List.length tl2 = 1)) && begin match tl1 @ tl2 with [] -> false | t1 :: tl -> - if c1 || c2 then raise_unexplained_for Unify; - List.iter (unify env t1) tl; - !e1 <> None || !e2 <> None + if no_arg then raise_unexplained_for Unify; + if List.for_all (unify_eq t1) tl then false else + (List.iter (unify env t1) tl; true) end in if redo then unify_row_field env fixed1 fixed2 rm1 rm2 l f1 f2 else let remq tl = @@ -3074,35 +3075,36 @@ and unify_row_field env fixed1 fixed2 rm1 rm2 l f1 f2 = in update_levels rm2 tl1'; update_levels rm1 tl2'; - let e = ref None in - let f1' = Reither(c1 || c2, tl2', m1 || m2, e) - and f2' = Reither(c1 || c2, tl1', m1 || m2, e) in - set_row_field e1 f1'; set_row_field e2 f2'; - | Reither(_, _, false, e1), Rabsent -> - if_not_fixed first (fun () -> set_row_field e1 f2) - | Rabsent, Reither(_, _, false, e2) -> - if_not_fixed second (fun () -> set_row_field e2 f1) + let f1' = rf_either tl2' ~no_arg ~matched in + let f2' = rf_either tl1' ~use_ext_of:f1' ~no_arg ~matched in + link_row_field_ext ~inside:f1 f1'; link_row_field_ext ~inside:f2 f2'; + | Reither(_, _, false), Rabsent -> + if_not_fixed first (fun () -> link_row_field_ext ~inside:f1 f2) + | Rabsent, Reither(_, _, false) -> + if_not_fixed second (fun () -> link_row_field_ext ~inside:f2 f1) | Rabsent, Rabsent -> () - | Reither(false, tl, _, e1), Rpresent(Some t2) -> + | Reither(false, tl, _), Rpresent(Some t2) -> if_not_fixed first (fun () -> - set_row_field e1 f2; + let s = snapshot () in + link_row_field_ext ~inside:f1 f2; update_level_for Unify !env (get_level rm1) t2; update_scope_for Unify (get_scope rm1) t2; (try List.iter (fun t1 -> unify env t1 t2) tl - with exn -> e1 := None; raise exn) + with exn -> undo_first_change_after s; raise exn) ) - | Rpresent(Some t1), Reither(false, tl, _, e2) -> + | Rpresent(Some t1), Reither(false, tl, _) -> if_not_fixed second (fun () -> - set_row_field e2 f1; + let s = snapshot () in + link_row_field_ext ~inside:f2 f1; update_level_for Unify !env (get_level rm2) t1; update_scope_for Unify (get_scope rm2) t1; (try List.iter (unify env t1) tl - with exn -> e2 := None; raise exn) + with exn -> undo_first_change_after s; raise exn) ) - | Reither(true, [], _, e1), Rpresent None -> - if_not_fixed first (fun () -> set_row_field e1 f2) - | Rpresent None, Reither(true, [], _, e2) -> - if_not_fixed second (fun () -> set_row_field e2 f1) + | Reither(true, [], _), Rpresent None -> + if_not_fixed first (fun () -> link_row_field_ext ~inside:f1 f2) + | Rpresent None, Reither(true, [], _) -> + if_not_fixed second (fun () -> link_row_field_ext ~inside:f2 f1) | _ -> raise_unexplained_for Unify let unify env ty1 ty2 = @@ -3729,9 +3731,8 @@ and moregen_row inst_nongen type_pairs env row1 row2 = try List.iter (fun (l,f1,f2) -> - let f1 = row_field_repr f1 and f2 = row_field_repr f2 in if f1 == f2 then () else - match f1, f2 with + match row_field_repr f1, row_field_repr f2 with (* Both matching [Rpresent]s *) | Rpresent(Some t1), Rpresent(Some t2) -> begin try @@ -3742,11 +3743,13 @@ and moregen_row inst_nongen type_pairs env row1 row2 = end | Rpresent None, Rpresent None -> () (* Both [Reither] *) - | Reither(c1, tl1, _, e1), Reither(c2, tl2, m2, e2) -> begin + | Reither(c1, tl1, _), Reither(c2, tl2, m2) -> begin try - if e1 != e2 then begin + if not (eq_row_field_ext f1 f2) then begin if c1 && not c2 then raise_unexplained_for Moregen; - set_row_field e1 (Reither (c2, [], m2, e2)); + let f2' = + rf_either [] ~use_ext_of:f2 ~no_arg:c2 ~matched:m2 in + link_row_field_ext ~inside:f1 f2'; if List.length tl1 = List.length tl2 then List.iter2 (moregen inst_nongen type_pairs env) tl1 tl2 else match tl2 with @@ -3761,9 +3764,9 @@ and moregen_row inst_nongen type_pairs env row1 row2 = (Variant (Incompatible_types_for l) :: trace) end (* Generalizing [Reither] *) - | Reither(false, tl1, _, e1), Rpresent(Some t2) when may_inst -> begin + | Reither(false, tl1, _), Rpresent(Some t2) when may_inst -> begin try - set_row_field e1 f2; + link_row_field_ext ~inside:f1 f2; List.iter (fun t1 -> moregen inst_nongen type_pairs env t1 t2) tl1 @@ -3771,9 +3774,10 @@ and moregen_row inst_nongen type_pairs env row1 row2 = raise_trace_for Moregen (Variant (Incompatible_types_for l) :: trace) end - | Reither(true, [], _, e1), Rpresent None when may_inst -> - set_row_field e1 f2 - | Reither(_, _, _, e1), Rabsent when may_inst -> set_row_field e1 f2 + | Reither(true, [], _), Rpresent None when may_inst -> + link_row_field_ext ~inside:f1 f2 + | Reither(_, _, _), Rabsent when may_inst -> + link_row_field_ext ~inside:f1 f2 (* Both [Rabsent]s *) | Rabsent, Rabsent -> () (* Mismatched constructor arguments *) @@ -3788,10 +3792,10 @@ and moregen_row inst_nongen type_pairs env row1 row2 = raise_for Moregen (Variant (Presence_not_guaranteed_for (Second, l))) (* Missing tags *) - | Rabsent, ((Rpresent _ | Reither _) as r) -> - raise_for Moregen (Variant (No_tags (First, [l, r]))) - | ((Rpresent _ | Reither _) as r), Rabsent -> - raise_for Moregen (Variant (No_tags (Second, [l, r])))) + | Rabsent, (Rpresent _ | Reither _) -> + raise_for Moregen (Variant (No_tags (First, [l, f2]))) + | (Rpresent _ | Reither _), Rabsent -> + raise_for Moregen (Variant (No_tags (Second, [l, f1])))) pairs with exn -> (* Undo [link_type] if we failed *) @@ -4071,9 +4075,8 @@ and eqtype_row rename type_pairs subst env row1 row2 = eqtype rename type_pairs subst env (row_more row1) (row_more row2); List.iter (fun (l,f1,f2) -> - let f1 = row_field_repr f1 and f2 = row_field_repr f2 in if f1 == f2 then () else - match f1, f2 with + match row_field_repr f1, row_field_repr f2 with (* Both matching [Rpresent]s *) | Rpresent(Some t1), Rpresent(Some t2) -> begin try @@ -4084,8 +4087,8 @@ and eqtype_row rename type_pairs subst env row1 row2 = end | Rpresent None, Rpresent None -> () (* Both matching [Reither]s *) - | Reither(c1, [], _, _), Reither(c2, [], _, _) when c1 = c2 -> () - | Reither(c1, t1::tl1, _, _), Reither(c2, t2::tl2, _, _) + | Reither(c1, [], _), Reither(c2, [], _) when c1 = c2 -> () + | Reither(c1, t1::tl1, _), Reither(c2, t2::tl2, _) when c1 = c2 -> begin try eqtype rename type_pairs subst env t1 t2; @@ -4117,10 +4120,10 @@ and eqtype_row rename type_pairs subst env row1 row2 = raise_for Equality (Variant (Presence_not_guaranteed_for (Second, l))) (* Missing tags *) - | Rabsent, ((Rpresent _ | Reither _) as r) -> - raise_for Equality (Variant (No_tags (First, [l, r]))) - | ((Rpresent _ | Reither _) as r), Rabsent -> - raise_for Equality (Variant (No_tags (Second, [l, r])))) + | Rabsent, (Rpresent _ | Reither _) -> + raise_for Equality (Variant (No_tags (First, [l, f2]))) + | (Rpresent _ | Reither _), Rabsent -> + raise_for Equality (Variant (No_tags (Second, [l, f1])))) pairs (* Must empty univar_pairs first *) @@ -4588,15 +4591,15 @@ let rec build_subtype env (visited : transient_expr list) (fun (l,f as orig) -> match row_field_repr f with Rpresent None -> if posi then - (l, Reither(true, [], false, ref None)), Unchanged + (l, rf_either_of None), Unchanged else orig, Unchanged | Rpresent(Some t) -> let (t', c) = build_subtype env visited loops posi level' t in let f = if posi && level > 0 - then Reither(false, [t'], false, ref None) - else Rpresent(Some t') + then rf_either_of (Some t') + else rf_present (Some t') in (l, f), c | _ -> assert false) fields @@ -4856,7 +4859,7 @@ and subtype_row env trace row1 row2 cstrs = List.fold_left (fun cstrs (_,f1,f2) -> match row_field_repr f1, row_field_repr f2 with - (Rpresent None|Reither(true,_,_,_)), Rpresent None -> + (Rpresent None|Reither(true,_,_)), Rpresent None -> cstrs | Rpresent(Some t1), Rpresent(Some t2) -> subtype_rec @@ -4864,7 +4867,7 @@ and subtype_row env trace row1 row2 cstrs = (Subtype.Diff {got = t1; expected = t2} :: trace) t1 t2 cstrs - | Reither(false, t1::_, _, _), Rpresent(Some t2) -> + | Reither(false, t1::_, _), Rpresent(Some t2) -> subtype_rec env (Subtype.Diff {got = t1; expected = t2} :: trace) @@ -4886,11 +4889,11 @@ and subtype_row env trace row1 row2 cstrs = (fun cstrs (_,f1,f2) -> match row_field_repr f1, row_field_repr f2 with Rpresent None, Rpresent None - | Reither(true,[],_,_), Reither(true,[],_,_) + | Reither(true,[],_), Reither(true,[],_) | Rabsent, Rabsent -> cstrs | Rpresent(Some t1), Rpresent(Some t2) - | Reither(false,[t1],_,_), Reither(false,[t2],_,_) -> + | Reither(false,[t1],_), Reither(false,[t2],_) -> subtype_rec env (Subtype.Diff {got = t1; expected = t2} :: trace) @@ -5040,9 +5043,9 @@ let rec normalize_type_rec visited ty = let Row {fields = orig_fields; more; name; fixed; closed} = row_repr row in let fields = List.map - (fun (l,f0) -> - let f = row_field_repr f0 in l, - match f with Reither(b, ty::(_::_ as tyl), m, e) -> + (fun (l,f) -> + l, + match row_field_repr f with Reither(b, ty::(_::_ as tyl), m) -> let tyl' = List.fold_left (fun tyl ty -> @@ -5053,14 +5056,14 @@ let rec normalize_type_rec visited ty = else ty::tyl) [ty] tyl in - if f != f0 || List.length tyl' < List.length tyl then - Reither(b, List.rev tyl', m, e) + if List.length tyl' <= List.length tyl then + rf_either (List.rev tyl') ~use_ext_of:f ~no_arg:b ~matched:m else f | _ -> f) orig_fields in let fields = List.sort (fun (p,_) (q,_) -> compare p q) - (List.filter (fun (_,fi) -> fi <> Rabsent) fields) in + (List.filter (fun (_,fi) -> row_field_repr fi <> Rabsent) fields) in set_type_desc ty (Tvariant (create_row ~fields ~more ~name ~fixed ~closed)) | Tobject (fi, nm) -> @@ -5086,7 +5089,7 @@ let rec normalize_type_rec visited ty = set_type_desc fi (get_desc fi') | _ -> () end; - iter_type_expr (normalize_type_rec visited) ty + iter_type_expr (normalize_type_rec visited) ty; end let normalize_type ty = @@ -5347,9 +5350,8 @@ let rec collapse_conj env visited ty = List.iter (fun (_l,fi) -> match row_field_repr fi with - Reither (c, t1::(_::_ as tl), m, e) -> - List.iter (unify env t1) tl; - set_row_field e (Reither (c, [t1], m, ref None)) + Reither (_c, t1::(_::_ as tl), _m) -> + List.iter (unify env t1) tl | _ -> ()) (row_fields row); @@ -5386,9 +5388,9 @@ let immediacy env typ = if not (row_closed row) || List.exists - (function - | _, (Rpresent (Some _) | Reither (false, _, _, _)) -> true - | _ -> false) + (fun (_, f) -> match row_field_repr f with + | Rpresent (Some _) | Reither (false, _, _) -> true + | _ -> false) (row_fields row) then Type_immediacy.Unknown diff --git a/typing/includecore.ml b/typing/includecore.ml index 85c4953adc96..1cfc9731342e 100644 --- a/typing/includecore.ml +++ b/typing/includecore.ml @@ -761,7 +761,7 @@ let private_variant env row1 params1 row2 params2 = | Some _, None | None, Some _ -> Some (Incompatible_types_for s) end - | Rpresent to1, Reither(const2, ts2, _, _) -> begin + | Rpresent to1, Reither(const2, ts2, _) -> begin match to1, const2, ts2 with | Some t1, false, [t2] -> loop (t1 :: tl1) (t2 :: tl2) pairs | None, true, [] -> loop tl1 tl2 pairs @@ -769,7 +769,7 @@ let private_variant env row1 params1 row2 params2 = end | Rpresent _, Rabsent -> Some (Missing (Second, s) : private_variant_mismatch) - | Reither(const1, ts1, _, _), Reither(const2, ts2, _, _) -> + | Reither(const1, ts1, _), Reither(const2, ts2, _) -> if const1 = const2 && List.length ts1 = List.length ts2 then loop (ts1 @ tl1) (ts2 @ tl2) pairs else diff --git a/typing/parmatch.ml b/typing/parmatch.ml index eb3ab4f23a10..2b48d63d5496 100644 --- a/typing/parmatch.ml +++ b/typing/parmatch.ml @@ -231,7 +231,7 @@ let first_column simplified_matrix = *) -let is_absent tag row = row_field tag !row = Rabsent +let is_absent tag row = row_field_repr (get_row_field tag !row) = Rabsent let is_absent_pat d = match d.pat_desc with @@ -722,11 +722,11 @@ let close_variant env row = List.fold_left (fun (nm, static) (_tag,f) -> match row_field_repr f with - | Reither(_, _, false, e) -> - (* m=false means that this tag is not explicitly matched *) - set_row_field e Rabsent; + | Reither(_, _, false) -> + (* fixed=false means that this tag is not explicitly matched *) + link_row_field_ext ~inside:f rf_absent; (None, static) - | Reither (_, _, true, _) -> (nm, false) + | Reither (_, _, true) -> (nm, false) | Rabsent | Rpresent _ -> (nm, static)) (orig_name, true) fields in if not closed || name != orig_name then begin @@ -767,8 +767,8 @@ let full_match closing env = match env with List.for_all (fun (tag,f) -> match row_field_repr f with - Rabsent | Reither(_, _, false, _) -> true - | Reither (_, _, true, _) + Rabsent | Reither(_, _, false) -> true + | Reither (_, _, true) (* m=true, do not discard matched tags, rather warn *) | Rpresent _ -> List.mem tag fields) (row_fields row) @@ -955,7 +955,7 @@ let build_other ext env = match row_field_repr f with Rabsent (* | Reither _ *) -> others (* This one is called after erasing pattern info *) - | Reither (c, _, _, _) -> make_other_pat tag c :: others + | Reither (c, _, _) -> make_other_pat tag c :: others | Rpresent arg -> make_other_pat tag (arg = None) :: others) [] (row_fields row) with diff --git a/typing/printtyp.ml b/typing/printtyp.ml index dc7395513b13..e55437587efa 100644 --- a/typing/printtyp.ml +++ b/typing/printtyp.ml @@ -554,16 +554,21 @@ and raw_row_fixed ppf = function | Some Types.Univar t -> fprintf ppf "Some(Univar(%a))" raw_type t | Some Types.Reified p -> fprintf ppf "Some(Reified(%a))" path p -and raw_field ppf = function - Rpresent None -> fprintf ppf "Rpresent None" - | Rpresent (Some t) -> fprintf ppf "@[<1>Rpresent(Some@,%a)@]" raw_type t - | Reither (c,tl,m,e) -> - fprintf ppf "@[Reither(%B,@,%a,@,%B,@,@[<1>ref%t@])@]" c +and raw_field ppf rf = + match_row_field + ~absent:(fun _ -> fprintf ppf "RFabsent") + ~present:(function + | None -> + fprintf ppf "RFpresent None" + | Some t -> + fprintf ppf "@[<1>RFpresent(Some@,%a)@]" raw_type t) + ~either:(fun c tl m e -> + fprintf ppf "@[RFeither(%B,@,%a,@,%B,@,@[<1>ref%t@])@]" c raw_type_list tl m (fun ppf -> - match !e with None -> fprintf ppf " None" - | Some f -> fprintf ppf "@,@[<1>(%a)@]" raw_field f) - | Rabsent -> fprintf ppf "Rabsent" + match e with None -> fprintf ppf " RFnone" + | Some f -> fprintf ppf "@,@[<1>(%a)@]" raw_field f)) + rf let raw_type_expr ppf t = visited := []; kind_vars := []; kind_count := 0; @@ -779,7 +784,7 @@ let nameable_row row = List.for_all (fun (_, f) -> match row_field_repr f with - | Reither(c, l, _, _) -> + | Reither(c, l, _) -> row_closed row && if c then l = [] else List.length l = 1 | _ -> true) (row_fields row) @@ -1182,9 +1187,9 @@ let rec tree_of_typexp mode ty = and tree_of_row_field mode (l, f) = match row_field_repr f with - | Rpresent None | Reither(true, [], _, _) -> (l, false, []) + | Rpresent None | Reither(true, [], _) -> (l, false, []) | Rpresent(Some ty) -> (l, false, [tree_of_typexp mode ty]) - | Reither(c, tyl, _, _) -> + | Reither(c, tyl, _) -> if c (* contradiction: constant constructor with an argument *) then (l, true, tree_of_typlist mode tyl) else (l, false, tree_of_typlist mode tyl) diff --git a/typing/typecore.ml b/typing/typecore.ml index 49daa98cddd0..caf67d0bb03c 100644 --- a/typing/typecore.ml +++ b/typing/typecore.ml @@ -397,18 +397,19 @@ let finalize_variant pat tag opat r = Tvariant row -> r := row; row | _ -> assert false in - begin match row_field tag row with + let f = get_row_field tag row in + begin match row_field_repr f with | Rabsent -> () (* assert false *) - | Reither (true, [], _, e) when not (row_closed row) -> - set_row_field e (Rpresent None) - | Reither (false, ty::tl, _, e) when not (row_closed row) -> - set_row_field e (Rpresent (Some ty)); + | Reither (true, [], _) when not (row_closed row) -> + link_row_field_ext ~inside:f (rf_present None) + | Reither (false, ty::tl, _) when not (row_closed row) -> + link_row_field_ext ~inside:f (rf_present (Some ty)); begin match opat with None -> assert false | Some pat -> let env = ref pat.pat_env in List.iter (unify_pat env pat) (ty::tl) end - | Reither (c, _l, true, e) when not (has_fixed_explanation row) -> - set_row_field e (Reither (c, [], false, ref None)) + | Reither (c, _l, true) when not (has_fixed_explanation row) -> + link_row_field_ext ~inside:f (rf_either [] ~no_arg:c ~matched:false) | _ -> () end (* Force check of well-formedness WHY? *) @@ -563,7 +564,8 @@ and build_as_type_aux env p = ty_res | Tpat_variant(l, p', _) -> let ty = Option.map (build_as_type env) p' in - newty (Tvariant (create_row ~fields:[l, Rpresent ty] ~more:(newvar()) + let fields = [l, rf_present ty] in + newty (Tvariant (create_row ~fields ~more:(newvar()) ~name:None ~fixed:None ~closed:false)) | Tpat_record (lpl,_) -> let lbl = snd3 (List.hd lpl) in @@ -776,15 +778,11 @@ let solve_Ppat_constraint ~refine loc env sty expected_ty = unify_pat_types ~refine loc env ty (instance expected_ty); (cty, ty, expected_ty') -let solve_Ppat_variant ~refine loc env tag constant expected_ty = - let arg_type = if constant then [] else [newgenvar()] in +let solve_Ppat_variant ~refine loc env tag no_arg expected_ty = + let arg_type = if no_arg then [] else [newgenvar()] in + let fields = [tag, rf_either ~no_arg arg_type ~matched:true] in let make_row more = - create_row - ~fields: [tag, Reither(constant, arg_type, true, ref None)] - ~closed: false - ~more - ~fixed: None - ~name: None + create_row ~fields ~closed:false ~more ~fixed:None ~name:None in let row = make_row (newgenvar ()) in let expected_ty = generic_instance expected_ty in @@ -809,13 +807,15 @@ let build_or_pat env loc lid = (fun (pats,fields) (l,f) -> match row_field_repr f with Rpresent None -> + let f = rf_either [] ~no_arg:true ~matched:true in (l,None) :: pats, - (l, Reither(true,[], true, ref None)) :: fields + (l, f) :: fields | Rpresent (Some ty) -> + let f = rf_either [ty] ~no_arg:false ~matched:true in (l, Some {pat_desc=Tpat_any; pat_loc=Location.none; pat_env=env; pat_type=ty; pat_extra=[]; pat_attributes=[]}) :: pats, - (l, Reither(false, [ty], true, ref None)) :: fields + (l, f) :: fields | _ -> pats, fields) ([],[]) (row_fields row0) in let fields = List.rev fields in @@ -2715,8 +2715,9 @@ let check_absent_variant env = then () else let ty_arg = match arg with None -> [] | Some p -> [correct_levels p.pat_type] in + let fields = [s, rf_either ty_arg ~no_arg:(arg=None) ~matched:true] in let row' = - create_row ~fields:[s, Reither(arg=None,ty_arg,true,ref None)] + create_row ~fields ~more:(newvar ()) ~closed:false ~fixed:None ~name:None in (* Should fail *) unify_pat (ref env) {pat with pat_type = newty (Tvariant row')} @@ -3091,7 +3092,10 @@ and type_expect_ get_desc (expand_head env ty_expected0) with | Some sarg, Tvariant row, Tvariant row0 -> - begin match row_field l row, row_field l row0 with + begin match + row_field_repr (get_row_field l row), + row_field_repr (get_row_field l row0) + with Rpresent (Some ty), Rpresent (Some ty0) -> let arg = type_argument env sarg ty ty0 in re { exp_desc = Texp_variant(l, Some arg); @@ -3107,7 +3111,7 @@ and type_expect_ let arg_type = Option.map (fun arg -> arg.exp_type) arg in let row = create_row - ~fields: [l, Rpresent arg_type] + ~fields: [l, rf_present arg_type] ~more: (newvar ()) ~closed: false ~fixed: None diff --git a/typing/typedecl.ml b/typing/typedecl.ml index 60acb632d200..9d38ebe97e36 100644 --- a/typing/typedecl.ml +++ b/typing/typedecl.ml @@ -1658,8 +1658,8 @@ let explain_unbound_single ppf tv ty = explain_unbound ppf tv (row_fields row) (fun (_l,f) -> match row_field_repr f with Rpresent (Some t) -> t - | Reither (_,[t],_,_) -> t - | Reither (_,tl,_,_) -> Btype.newgenty (Ttuple tl) + | Reither (_,[t],_) -> t + | Reither (_,tl,_) -> Btype.newgenty (Ttuple tl) | _ -> Btype.newgenty (Ttuple[])) "case" (fun (lab,_) -> "`" ^ lab ^ " of ") | _ -> trivial ty diff --git a/typing/typedecl_separability.ml b/typing/typedecl_separability.ml index 5956fae91e92..c6ded4cf6a71 100644 --- a/typing/typedecl_separability.ml +++ b/typing/typedecl_separability.ml @@ -175,16 +175,13 @@ and immediate_subtypes_variant_row acc desc = in add_row (add_subtypes acc) -and immediate_subtypes_variant_row_field acc = function +and immediate_subtypes_variant_row_field acc f = + match row_field_repr f with | Rpresent(None) | Rabsent -> acc | Rpresent(Some(ty)) -> ty :: acc - | Reither(_,field_types,_,r) -> - let acc = List.rev_append field_types acc in - begin match !r with - | None -> acc - | Some rf -> immediate_subtypes_variant_row_field acc rf - end + | Reither(_,field_types,_) -> + List.rev_append field_types acc let free_variables ty = Ctype.free_variables ty diff --git a/typing/typedecl_variance.ml b/typing/typedecl_variance.ml index 9bc39265af40..05b0c2eba6ef 100644 --- a/typing/typedecl_variance.ml +++ b/typing/typedecl_variance.ml @@ -101,7 +101,7 @@ let compute_variance env visited vari ty = match row_field_repr f with Rpresent (Some ty) -> compute_same ty - | Reither (_, tyl, _, _) -> + | Reither (_, tyl, _) -> let open Variance in let upper = List.fold_left (fun s f -> set f true s) diff --git a/typing/types.ml b/typing/types.ml index 34c1cb3b9a3c..c9b2efd1c0eb 100644 --- a/typing/types.ml +++ b/typing/types.ml @@ -50,13 +50,16 @@ and row_desc = row_name: (Path.t * type_expr list) option } and fixed_explanation = | Univar of type_expr | Fixed_private | Reified of Path.t | Rigid -and row_field = - Rpresent of type_expr option - | Reither of bool * type_expr list * bool * row_field option ref - (* 1st true denotes a constant constructor *) - (* 2nd true denotes a tag in a pattern matching, and - is erased later *) - | Rabsent +and row_field = [`some] row_field_gen +and _ row_field_gen = + RFpresent : type_expr option -> [> `some] row_field_gen + | RFeither : + { no_arg: bool; + arg_type: type_expr list; + matched: bool; + ext: [`some | `none] row_field_gen ref} -> [> `some] row_field_gen + | RFabsent : [> `some] row_field_gen + | RFnone : [> `none] row_field_gen and abbrev_memo = Mnil @@ -479,8 +482,6 @@ let signature_item_id = function | Sig_class_type (id, _, _, _) -> id -(* migrating repr from Btype.. *) - (**** Definitions for backtracking ****) type change = @@ -490,7 +491,7 @@ type change = | Cscope of type_expr * int | Cname of (Path.t * type_expr list) option ref * (Path.t * type_expr list) option - | Crow of row_field option ref * row_field option + | Crow of [`none|`some] row_field_gen ref | Ckind of [`var] field_kind_gen | Ccommu of [`var] commutable_gen | Cuniv of type_expr option ref * type_expr option @@ -618,6 +619,16 @@ let row_closed row = (row_repr_no_fields row).row_closed let row_fixed row = (row_repr_no_fields row).row_fixed let row_name row = (row_repr_no_fields row).row_name +let rec get_row_field tag row = + let rec find = function + | (tag',f) :: fields -> + if tag = tag' then f else find fields + | [] -> + match get_desc row.row_more with + | Tvariant row' -> get_row_field tag row' + | _ -> RFabsent + in find row.row_fields + let set_row_name row row_name = let row_fields = row_fields row in let row = row_repr_no_fields row in @@ -639,26 +650,69 @@ let row_repr row = fixed = row.row_fixed; name = row.row_name } -let rec row_field_repr_aux tl = function - Reither(_, tl', _, {contents = Some fi}) -> - row_field_repr_aux (tl@tl') fi - | Reither(c, tl', m, r) -> - Reither(c, tl@tl', m, r) - | Rpresent (Some _) when tl <> [] -> - Rpresent (Some (List.hd tl)) - | fi -> fi +type row_field_view = + Rpresent of type_expr option + | Reither of bool * type_expr list * bool + (* 1st true denotes a constant constructor *) + (* 2nd true denotes a tag in a pattern matching, and + is erased later *) + | Rabsent -let row_field_repr fi = row_field_repr_aux [] fi +let rec row_field_repr_aux tl : row_field -> row_field = function + | RFeither ({ext = {contents = RFnone}} as r) -> + RFeither {r with arg_type = tl@r.arg_type} + | RFeither {arg_type; + ext = {contents = RFeither _ | RFpresent _ | RFabsent as rf}} -> + row_field_repr_aux (tl@arg_type) rf + | RFpresent (Some _) when tl <> [] -> + RFpresent (Some (List.hd tl)) + | RFpresent _ as rf -> rf + | RFabsent -> RFabsent + +let row_field_repr fi = + match row_field_repr_aux [] fi with + | RFeither {no_arg; arg_type; matched} -> Reither (no_arg, arg_type, matched) + | RFpresent t -> Rpresent t + | RFabsent -> Rabsent + +let rec row_field_ext (fi : row_field) = + match fi with + | RFeither {ext = {contents = RFnone} as ext} -> ext + | RFeither {ext = {contents = RFeither _ | RFpresent _ | RFabsent as rf}} -> + row_field_ext rf + | _ -> Misc.fatal_error "Types.row_field_ext " + +let rf_present oty = RFpresent oty +let rf_absent = RFabsent +let rf_either ?use_ext_of ~no_arg arg_type ~matched = + let ext = + match use_ext_of with + Some rf -> row_field_ext rf + | None -> ref RFnone + in + RFeither {no_arg; arg_type; matched; ext} + +let rf_either_of = function + | None -> + RFeither {no_arg=true; arg_type=[]; matched=false; ext=ref RFnone} + | Some ty -> + RFeither {no_arg=false; arg_type=[ty]; matched=false; ext=ref RFnone} + +let eq_row_field_ext rf1 rf2 = + row_field_ext rf1 == row_field_ext rf2 + +let match_row_field ~present ~absent ~either (f : row_field) = + match f with + | RFabsent -> absent () + | RFpresent t -> present t + | RFeither {no_arg; arg_type; matched; ext} -> + let e : row_field option = + match !ext with + | RFnone -> None + | RFeither _ | RFpresent _ | RFabsent as e -> Some e + in + either no_arg arg_type matched e -let rec row_field tag row = - let rec find = function - | (tag',f) :: fields -> - if tag = tag' then row_field_repr f else find fields - | [] -> - match get_desc row.row_more with - | Tvariant row' -> row_field tag row' - | _ -> Rabsent - in find row.row_fields (**** Some type creators ****) @@ -679,14 +733,14 @@ let newty2 ~level desc = let undo_change = function Ctype (ty, desc) -> Transient_expr.set_desc ty desc - | Ccompress (ty, desc, _) -> Transient_expr.set_desc ty desc + | Ccompress (ty, desc, _) -> Transient_expr.set_desc ty desc | Clevel (ty, level) -> Transient_expr.set_level ty level | Cscope (ty, scope) -> Transient_expr.set_scope ty scope - | Cname (r, v) -> r := v - | Crow (r, v) -> r := v + | Cname (r, v) -> r := v + | Crow r -> r := RFnone | Ckind (FKvar r) -> r.field_kind <- FKprivate - | Ccommu (Cvar r) -> r.commu <- Cunknown - | Cuniv (r, v) -> r := v + | Ccommu (Cvar r) -> r.commu <- Cunknown + | Cuniv (r, v) -> r := v type snapshot = changes ref * int let last_snapshot = Local_store.s_ref 0 @@ -740,8 +794,15 @@ let set_univar rty ty = log_change (Cuniv (rty, !rty)); rty := Some ty let set_name nm v = log_change (Cname (nm, !nm)); nm := v -let set_row_field e v = - log_change (Crow (e, !e)); e := Some v + +let rec link_row_field_ext ~(inside : row_field) (v : row_field) = + match inside with + | RFeither {ext = {contents = RFnone} as e} -> + let RFeither _ | RFpresent _ | RFabsent as v = v in + log_change (Crow e); e := v + | RFeither {ext = {contents = RFeither _ | RFpresent _ | RFabsent as rf}} -> + link_row_field_ext ~inside:rf v + | _ -> invalid_arg "Types.link_row_field_ext" let rec link_kind ~(inside : field_kind) (k : field_kind) = match inside with @@ -791,7 +852,7 @@ let rec rev_log accu = function let backtrack ~cleanup_abbrev (changes, old) = match !changes with Unchanged -> last_snapshot := old - | Invalid -> failwith "Btype.backtrack" + | Invalid -> failwith "Types.backtrack" | Change _ as change -> cleanup_abbrev (); let backlog = rev_log [] change in @@ -800,6 +861,12 @@ let backtrack ~cleanup_abbrev (changes, old) = last_snapshot := old; trail := changes +let undo_first_change_after (changes, _) = + match !changes with + | Change (ch, _) -> + undo_change ch + | _ -> () + let rec rev_compress_log log r = match !r with Unchanged | Invalid -> diff --git a/typing/types.mli b/typing/types.mli index 20238c14e946..71964b8cf7e9 100644 --- a/typing/types.mli +++ b/typing/types.mli @@ -57,6 +57,7 @@ open Asttypes *) type type_expr type row_desc +type row_field type field_kind type commutable @@ -136,13 +137,6 @@ and fixed_explanation = | Fixed_private (** The row type is private *) | Reified of Path.t (** The row was reified *) | Rigid (** The row type was made rigid during constraint verification *) -and row_field = - Rpresent of type_expr option - | Reither of bool * type_expr list * bool * row_field option ref - (* 1st true denotes a constant constructor *) - (* 2nd true denotes a tag in a pattern matching, and - is erased later *) - | Rabsent (** [abbrev_memo] allows one to keep track of different expansions of a type alias. This is done for performance purposes. @@ -320,19 +314,41 @@ val row_name: row_desc -> (Path.t * type_expr list) option val set_row_name: row_desc -> (Path.t * type_expr list) option -> row_desc +val get_row_field: label -> row_desc -> row_field + (** get all fields at once; different from the old [row_repr] *) type row_desc_repr = Row of { fields: (label * row_field) list; - more:type_expr; - closed:bool; - fixed:fixed_explanation option; - name:(Path.t * type_expr list) option } + more: type_expr; + closed: bool; + fixed: fixed_explanation option; + name: (Path.t * type_expr list) option } val row_repr: row_desc -> row_desc_repr -(** Return the canonical representative of a row field *) -val row_field_repr: row_field -> row_field -val row_field: label -> row_desc -> row_field +(** Current contents of a row field *) +type row_field_view = + Rpresent of type_expr option + | Reither of bool * type_expr list * bool + (* 1st true denotes a constant constructor *) + (* 2nd true denotes a tag in a pattern matching, and + is erased later *) + | Rabsent + +val row_field_repr: row_field -> row_field_view +val rf_present: type_expr option -> row_field +val rf_absent: row_field +val rf_either: + ?use_ext_of:row_field -> + no_arg:bool -> type_expr list -> matched:bool -> row_field +val rf_either_of: type_expr option -> row_field + +val eq_row_field_ext: row_field -> row_field -> bool +val match_row_field: + present:(type_expr option -> 'a) -> + absent:(unit -> 'a) -> + either:(bool -> type_expr list -> bool -> row_field option ->'a) -> + row_field -> 'a (* *) @@ -683,6 +699,9 @@ val backtrack: cleanup_abbrev:(unit -> unit) -> snapshot -> unit (* Backtrack to a given snapshot. Only possible if you have not already backtracked to a previous snapshot. Calls [cleanup_abbrev] internally *) +val undo_first_change_after: snapshot -> unit + (* Backtrack only the first change after a snapshot. + Does not update the list of changes *) val undo_compress: snapshot -> unit (* Backtrack only path compression. Only meaningful if you have not already backtracked to a previous snapshot. @@ -702,7 +721,9 @@ val set_scope: type_expr -> int -> unit val set_name: (Path.t * type_expr list) option ref -> (Path.t * type_expr list) option -> unit -val set_row_field: row_field option ref -> row_field -> unit +val link_row_field_ext: inside:row_field -> row_field -> unit + (* Extract the extension variable of [inside] and set it to the + second argument *) val set_univar: type_expr option ref -> type_expr -> unit val link_kind: inside:field_kind -> field_kind -> unit val link_commu: inside:commutable -> commutable -> unit diff --git a/typing/typetexp.ml b/typing/typetexp.ml index d1eb12d633ee..b4a7a5981ef4 100644 --- a/typing/typetexp.ml +++ b/typing/typetexp.ml @@ -323,10 +323,7 @@ and transl_type_aux env policy styp = List.map (fun (l,f) -> l, match row_field_repr f with - | Rpresent (Some ty) -> - Reither(false, [ty], false, ref None) - | Rpresent None -> - Reither (true, [], false, ref None) + | Rpresent oty -> rf_either_of oty | _ -> f) (row_fields row) in @@ -416,14 +413,13 @@ and transl_type_aux env policy styp = let f = match present with Some present when not (List.mem l.txt present) -> let ty_tl = List.map (fun cty -> cty.ctyp_type) tl in - Reither(c, ty_tl, false, ref None) + rf_either ty_tl ~no_arg:c ~matched:false | _ -> if List.length stl > 1 || c && stl <> [] then raise(Error(styp.ptyp_loc, env, Present_has_conjunction l.txt)); - match tl with [] -> Rpresent None - | st :: _ -> - Rpresent (Some st.ctyp_type) + match tl with [] -> rf_present None + | st :: _ -> rf_present (Some st.ctyp_type) in add_typed_field styp.ptyp_loc l.txt f; Ttag (l,c,tl) @@ -448,13 +444,9 @@ and transl_type_aux env policy styp = (fun (l, f) -> let f = match present with Some present when not (List.mem l present) -> - begin match f with - Rpresent(Some ty) -> - Reither(false, [ty], false, ref None) - | Rpresent None -> - Reither(true, [], false, ref None) - | _ -> - assert false + begin match row_field_repr f with + Rpresent oty -> rf_either_of oty + | _ -> assert false end | _ -> f in @@ -596,7 +588,8 @@ let rec make_fixed_univars ty = let fields = List.map (fun (s,f as p) -> match row_field_repr f with - Reither (c, tl, _m, r) -> s, Reither (c, tl, true, r) + Reither (no_arg, tl, _m) -> + s, rf_either tl ~use_ext_of:f ~no_arg ~matched:true | _ -> p) fields in