2a13aca4

Author: Tom Sydney Kerckhove <syd@cs-syd.eu>

Committer: Tom Sydney Kerckhove <NorfairKing@users.noreply.github.com>

ical-recurrence: carry the duration across a mismatched RecurrenceDateTimes

[section 3.8.5.2](https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5.2)

@
Value Type:  The default value type for this property is DATE-TIME.
   The value type can be set to DATE or PERIOD.
@

Appendix A.1 requires DTEND and DUE to use the value type of DTSTART and
requires nothing of RDATE, so an RDATE may hand an instance a value type
the event does not use.  The instance still has to end somewhere, so
carry the duration into the value type of the new start instead of
refusing it.

A whole number of days becomes that many days as an exact duration.  Its
inverse rounds up to whole days and never down to none, because a
DATE-valued DTEND is exclusive and cannot name part of a day, so a one
hour event becomes a one day all-day instance.

This also drops StartStartMismatch, which those two arms were the only
users of.  It described a mismatch between the value type of the original
start and of the new one, which is now handled rather than rejected, so
the constructor could no longer be produced.

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 0s 1s 1s 1s 0s
Eval 1s 9s 9s 10s 0s
Build 10s 0s 0s 10s 0s
Suite 0s 11s 10s 10s 0s

Timeline

0s10s