diff --git a/src/lib/mappings.ml b/src/lib/mappings.ml index e72dd9d9f..a2c27f474 100644 --- a/src/lib/mappings.ml +++ b/src/lib/mappings.ml @@ -198,9 +198,10 @@ let name_gen prefix = (* Take a arm like " => " and turn it into " => Some()" *) let some_arm = function - | Pat_aux (Pat_exp (pat, exp), annot) -> Pat_aux (Pat_exp (pat, mk_exp (E_app (mk_id "Some", [exp]))), annot) - | Pat_aux (Pat_when (pat, guard, exp), annot) -> - Pat_aux (Pat_when (pat, guard, mk_exp (E_app (mk_id "Some", [exp]))), annot) + | Pat_aux (Pat_exp (pat, exp), ((l, _) as annot)) -> + Pat_aux (Pat_exp (pat, mk_exp ~loc:l (E_app (mk_id "Some", [exp]))), annot) + | Pat_aux (Pat_when (pat, guard, exp), ((l, _) as annot)) -> + Pat_aux (Pat_when (pat, guard, mk_exp ~loc:l (E_app (mk_id "Some", [exp]))), annot) let wildcard_none = mk_pexp (Pat_exp (mk_pat P_wild, mk_exp (E_app (mk_id "None", [mk_lit_exp L_unit])))) diff --git a/test/sailcov/nested_mapping1.expect b/test/sailcov/nested_mapping1.expect new file mode 100644 index 000000000..f910e665f --- /dev/null +++ b/test/sailcov/nested_mapping1.expect @@ -0,0 +1,33 @@ + + + + +nested_mapping1 + +

nested_mapping1.sail (2/5) 40%

+ +default Order dec
+$include <prelude.sail>
+
+union ast = {
+  B : (bool),
+  Z : unit
+}
+
+mapping bool_not_bits : bool <-> bits(1) = {
+  true   <-> 0b0,
+  false  <-> 0b1
+}
+
+mapping encdec  : bits(2) <->  ast = {
+  0b00 <-> Z(),
+  0b1 @ bool_not_bits(s) <-> B(s)
+}
+
+val main : unit -> unit
+function main() = {
+    let _ = encdec(0b00)
+}

+
+ + \ No newline at end of file diff --git a/test/sailcov/nested_mapping1.sail b/test/sailcov/nested_mapping1.sail new file mode 100644 index 000000000..bbd28bb18 --- /dev/null +++ b/test/sailcov/nested_mapping1.sail @@ -0,0 +1,22 @@ +default Order dec +$include + +union ast = { + B : (bool), + Z : unit +} + +mapping bool_not_bits : bool <-> bits(1) = { + true <-> 0b0, + false <-> 0b1 +} + +mapping encdec : bits(2) <-> ast = { + 0b00 <-> Z(), + 0b1 @ bool_not_bits(s) <-> B(s) +} + +val main : unit -> unit +function main() = { + let _ = encdec(0b00) +} \ No newline at end of file