Disambiguate recursive record groups and share group configuration

This commit is contained in:
sneeker committed 2019-04-12 01:14:26 +00:00
1 parent faefa72427
commit a3d0d4d778
2 files changed
+35 -9

No files matched your search

+21
View File
@@ -133,3 +133,24 @@ let () =
assert (Fieldglass.view Pairs._colour Pairs.{ colour = "grey" } = "grey");
assert (Silent.{ colour = "grey" }.colour = "grey");
assert (Functions.colour Functions.{ colour = "grey" } = "grey")
module Recursive = struct
type left = { value : int; next : right option }
and right = { value : string; next : left option }
[@@fieldglass generate ~field_prefix_from_type]
end
module Ambiguous = struct
type number = { contents : int }
and text = { contents : string }
[@@fieldglass generate ~field_prefix_from_type]
end
let () =
let left : Recursive.left = { value = 3; next = None } in
let right : Recursive.right = { value = "grey"; next = Some left } in
assert (Recursive.left_value left = 3);
assert (Recursive.right_value (Recursive.set_right_value "blue" right) = "blue");
assert (Recursive.right_next right = Some left);
let number : Ambiguous.number = { contents = 3 } in
assert (Ambiguous.number_contents (Ambiguous.set_number_contents 4 number) = 4)