╭ changed ────╮ │src/event.zig│ ╰─────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────╮ │1117 }; │ │1118 │ │1119 // what a three-way merge did with a field │ │1120 -const FieldMerge = enum { │ │1120 +pub const FieldMerge = enum { │ │1121 // the target's value stands, because neither side changed it, both made the│ │1122 // same change, or only the target changed it │ │1123 kept, │ ╰──────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1249 outcome = @splat(.kept); │ │1250 merged = target_record; │ │1251 merged.event = mergeFields(T, if (baseline_record) |baseline| baseline.event else null, target_record.event, parent_record.event, &outcome);│ │1252 + if (comptime @hasDecl(T, "resolveMerge")) { │ │1253 + T.resolveMerge(target_record.event, parent_record.event, &merged.event, &outcome); │ │1254 + } │ │1255 │ │1256 // merge the removed state separately from serialized fields. removal │ │1257 // carries over an unchanged record, while an edit or restoration │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯