From b842d14e94d2a8d1808cfcd8f000cbff2b3b1b59 Mon Sep 17 00:00:00 2001 From: stevebleazard Date: Wed, 2 Jun 2021 10:11:22 +0100 Subject: [PATCH] Resolved issue with compiler release 4.11 - Resolved issue with compiler release 4.11 going into an infinite loop compiling lib/utilities.ml --- CHANGES.md | 4 ++++ lib/utilities.ml | 18 +++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index eb8cd6c..a1db2c0 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,7 @@ +## v1.0.1 (2021-06-02) +- Resolved issue with compiler release 4.11 going into an + infinite loop compiling lib/utilities.ml + ## v1.0.0 (2021-02-21) - Initial release diff --git a/lib/utilities.ml b/lib/utilities.ml index 047441e..67781f8 100644 --- a/lib/utilities.ml +++ b/lib/utilities.ml @@ -191,7 +191,6 @@ let rec equal json1 json2 = | `Variant (n1, v1), `Variant (n2, v2) -> begin match String.compare n1 n2 with | 0 -> begin - (* match (v1:'a Json_internal.constrained option), (v2:'a option) with *) match v1, v2 with | Some v1, Some v2 -> equal v1 v2 | None, None -> true @@ -199,4 +198,21 @@ let rec equal json1 json2 = end | _ -> false end + (* + The following causes some compiler versions, especially 4.11, to go into an + infinite loop. Expanding the left hand side appears to resolve this. + | (_:'a Json_internal.constrained), (_:'a Json_internal.constrained) -> false + *) + | `Null, (_:'a Json_internal.constrained) + | `Bool _, (_:'a Json_internal.constrained) + | `Int _, (_:'a Json_internal.constrained) + | `Intlit _, (_:'a Json_internal.constrained) + | `Float _, (_:'a Json_internal.constrained) + | `Floatlit _, (_:'a Json_internal.constrained) + | `String _, (_:'a Json_internal.constrained) + | `Stringlit _, (_:'a Json_internal.constrained) + | `Assoc _, (_:'a Json_internal.constrained) + | `Tuple _, (_:'a Json_internal.constrained) + | `List _, (_:'a Json_internal.constrained) + | `Variant _, (_:'a Json_internal.constrained) -> false