From 12b82a418f43d9f73265ec28c5bb728f4f5f802b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr>
Date: Tue, 28 May 2024 12:11:36 +0200
Subject: [PATCH] [Eva] Minor change in value_product.

In backward_binop, avoids using left/right for the left/right modules and for
the lelt/right arguments at the same time.

In most functions, restores symmetry by using let+/and+ bindings instead of
let*/let+ bindings.
---
 src/plugins/eva/values/value_product.ml | 63 ++++++++++++-------------
 1 file changed, 30 insertions(+), 33 deletions(-)

diff --git a/src/plugins/eva/values/value_product.ml b/src/plugins/eva/values/value_product.ml
index c313e18ef28..0cfbe6e78b6 100644
--- a/src/plugins/eva/values/value_product.ml
+++ b/src/plugins/eva/values/value_product.ml
@@ -67,8 +67,8 @@ module Make
     Left.join l1 l2, Right.join r1 r2
 
   let narrow (l1, r1) (l2, r2) =
-    let* left  = Left.narrow  l1 l2 in
-    let+ right = Right.narrow r1 r2 in
+    let+ left  = Left.narrow  l1 l2
+    and+ right = Right.narrow r1 r2 in
     left, right
 
   let zero = Left.zero, Right.zero
@@ -77,53 +77,53 @@ module Make
   let inject_int typ i = Left.inject_int typ i, Right.inject_int typ i
 
   let assume_non_zero (left, right) =
-    let left_truth  = Left.assume_non_zero  left  in
-    let right_truth = Right.assume_non_zero right in
+    let left_truth  = Left.assume_non_zero  left
+    and right_truth = Right.assume_non_zero right in
     narrow_truth (left, left_truth) (right, right_truth)
 
   let assume_bounded kind bound (left, right) =
-    let left_truth  = Left.assume_bounded  kind bound left  in
-    let right_truth = Right.assume_bounded kind bound right in
+    let left_truth  = Left.assume_bounded  kind bound left
+    and right_truth = Right.assume_bounded kind bound right in
     narrow_truth (left, left_truth) (right, right_truth)
 
   let assume_not_nan ~assume_finite fkind (left, right) =
-    let left_truth  = Left.assume_not_nan  ~assume_finite fkind left  in
-    let right_truth = Right.assume_not_nan ~assume_finite fkind right in
+    let left_truth  = Left.assume_not_nan  ~assume_finite fkind left
+    and right_truth = Right.assume_not_nan ~assume_finite fkind right in
     narrow_truth (left, left_truth) (right, right_truth)
 
   let assume_pointer (left, right) =
-    let left_truth  = Left.assume_pointer  left  in
-    let right_truth = Right.assume_pointer right in
+    let left_truth  = Left.assume_pointer  left
+    and right_truth = Right.assume_pointer right in
     narrow_truth (left, left_truth) (right, right_truth)
 
   let assume_comparable op (l1, r1) (l2, r2) =
-    let left_truth  = Left.assume_comparable  op l1 l2 in
-    let right_truth = Right.assume_comparable op r1 r2 in
+    let left_truth  = Left.assume_comparable  op l1 l2
+    and right_truth = Right.assume_comparable op r1 r2 in
     narrow_truth_pair ((l1, l2), left_truth) ((r1, r2), right_truth)
 
   let constant context expr constant =
-    let left  = Left.constant  context expr constant in
-    let right = Right.constant context expr constant in
+    let left  = Left.constant  context expr constant
+    and right = Right.constant context expr constant in
     left, right
 
   let forward_unop context typ unop (left, right) =
-    let* left  = Left.forward_unop  context typ unop left  in
-    let+ right = Right.forward_unop context typ unop right in
+    let+ left  = Left.forward_unop  context typ unop left
+    and+ right = Right.forward_unop context typ unop right in
     left, right
 
   let forward_binop context typ binop (l1, r1) (l2, r2) =
-    let* left  = Left.forward_binop  context typ binop l1 l2 in
-    let+ right = Right.forward_binop context typ binop r1 r2 in
+    let+ left  = Left.forward_binop  context typ binop l1 l2
+    and+ right = Right.forward_binop context typ binop r1 r2 in
     left, right
 
   let rewrap_integer context range (left, right) =
-    let left  = Left.rewrap_integer  context range left  in
-    let right = Right.rewrap_integer context range right in
+    let left  = Left.rewrap_integer  context range left
+    and right = Right.rewrap_integer context range right in
     left, right
 
   let forward_cast context ~src_type ~dst_type (left, right) =
-    let* left  = Left.forward_cast context  ~src_type ~dst_type left  in
-    let+ right = Right.forward_cast context ~src_type ~dst_type right in
+    let+ left  = Left.forward_cast context  ~src_type ~dst_type left
+    and+ right = Right.forward_cast context ~src_type ~dst_type right in
     left, right
 
   let resolve_functions (left, right) =
@@ -145,28 +145,25 @@ module Make
     | None, Some right      -> Some (orig_left, right)
     | Some left, Some right -> Some (left, right)
 
-  let left  (value : t) : Left.t  = fst value
-  let right (value : t) : Right.t = snd value
-
   let backward_unop context ~typ_arg unop ~arg ~res =
     let on_left  = Left.backward_unop  context ~typ_arg unop in
     let on_right = Right.backward_unop context ~typ_arg unop in
-    let* left  = on_left  ~arg:(left  arg) ~res:(left  res) in
-    let+ right = on_right ~arg:(right arg) ~res:(right res) in
+    let+ left  = on_left  ~arg:(fst arg) ~res:(fst res)
+    and+ right = on_right ~arg:(snd arg) ~res:(snd res) in
     reduce arg left right
 
-  let backward_binop ctx ~input_type ~resulting_type binop ~left:l ~right:r ~result:res =
+  let backward_binop ctx ~input_type ~resulting_type binop ~left ~right ~result:res =
     let on_left  = Left.backward_binop  ctx ~input_type ~resulting_type binop in
     let on_right = Right.backward_binop ctx ~input_type ~resulting_type binop in
-    let* l1, l2 = on_left  ~left:(left  l) ~right:(left  r) ~result:(left  res) in
-    let+ r1, r2 = on_right ~left:(right l) ~right:(right r) ~result:(right res) in
-    reduce l l1 r1, reduce r l2 r2
+    let+ l1, l2 = on_left  ~left:(fst left) ~right:(fst right) ~result:(fst res)
+    and+ r1, r2 = on_right ~left:(snd left) ~right:(snd right) ~result:(snd res) in
+    reduce left l1 r1, reduce right l2 r2
 
   let backward_cast context ~src_typ ~dst_typ ~src_val ~dst_val =
     let on_left  = Left.backward_cast  context ~src_typ ~dst_typ in
     let on_right = Right.backward_cast context ~src_typ ~dst_typ in
-    let* left  = on_left  ~src_val:(left  src_val) ~dst_val:(left  dst_val) in
-    let+ right = on_right ~src_val:(right src_val) ~dst_val:(right dst_val) in
+    let+ left  = on_left  ~src_val:(fst src_val) ~dst_val:(fst dst_val)
+    and+ right = on_right ~src_val:(snd src_val) ~dst_val:(snd dst_val) in
     reduce src_val left right
 
 end
-- 
GitLab