Generate immutable setters with type-changing singleton updates
This commit is contained in:
2 files changed
+25
-2
No files matched your search
@@ -11,3 +11,20 @@ let () =
|
||||
assert (Colour.red colour = 3);
|
||||
assert (Colour.green colour = 4);
|
||||
assert (Legacy.value Legacy.{ value = "grey" } = "grey")
|
||||
|
||||
module Box = struct
|
||||
type 'a t = { contents : 'a } [@@fieldglass generate]
|
||||
end
|
||||
|
||||
module Mutable = struct
|
||||
type t = { mutable count : int; label : string } [@@fieldglass generate]
|
||||
end
|
||||
|
||||
let () =
|
||||
let original = Colour.{ red = 3; green = 4; blue = 5 } in
|
||||
assert (Colour.set_red 8 original = Colour.{ red = 8; green = 4; blue = 5 });
|
||||
assert (Colour.red original = 3);
|
||||
assert (Box.set_contents "grey" Box.{ contents = 9 } = Box.{ contents = "grey" });
|
||||
let original = Mutable.{ count = 1; label = "grey" } in
|
||||
let changed = Mutable.set_count 2 original in
|
||||
assert (original.Mutable.count = 1 && changed.Mutable.count = 2)
|
||||
Reference in new issue
Block a user