Finds and fixes
absl::Time subtraction expressions to do subtraction
in the Time domain instead of the numeric domain.
There are two cases of Time subtraction in which deduce additional type information:
When the result is an
absl::Durationand the first argument is an
When the second argument is a
In the first case, we must know the result of the operation, since without that
the second operand could be either an
absl::Time or an
In the second case, the first operand must be an
absl::Time from an
absl::Duration is not defined.
int x; absl::Time t; // Original - absl::Duration result and first operand is a absl::Time. absl::Duration d = absl::Seconds(absl::ToUnixSeconds(t) - x); // Suggestion - Perform subtraction in the Time domain instead. absl::Duration d = t - absl::FromUnixSeconds(x); // Original - Second operand is an absl::Time. int i = x - absl::ToUnixSeconds(t); // Suggestion - Perform subtraction in the Time domain instead. int i = absl::ToInt64Seconds(absl::FromUnixSeconds(x) - t);