When debugging a separate issue, I discovered that Time/EN happily resolves "9:15 815" to 9:15 on January 1, 815 (i.e. a very specific time of day during the Byzantine Empire), marked as non-latent. Similarly, "9:15 35" resolves to 9:15 on January 1 2035.
It seems unlikely to me that anyone inputting this construct really wants a year after a bare time of day, it's more likely that the number is unrelated, e.g. "9:15 35 cars drove by".
I think the most obvious option is to break ruleIntersect into two rules, one that accepts only non-latent second tokens and the other which accepts latent years but sanity checks that the grain of the first token isn't overly specific to be referring to a time in a year.
When debugging a separate issue, I discovered that Time/EN happily resolves "9:15 815" to 9:15 on January 1, 815 (i.e. a very specific time of day during the Byzantine Empire), marked as non-latent. Similarly, "9:15 35" resolves to 9:15 on January 1 2035.
It seems unlikely to me that anyone inputting this construct really wants a year after a bare time of day, it's more likely that the number is unrelated, e.g. "9:15 35 cars drove by".
I think the most obvious option is to break
ruleIntersect
into two rules, one that accepts only non-latent second tokens and the other which accepts latent years but sanity checks that the grain of the first token isn't overly specific to be referring to a time in a year.ruleIntersect