Overridden here (rather than left to each case class) so it's picked up by every case class's synthesized toString slot instead of the default field dump they'd otherwise generate (InvalidSyntax((abc,3,expected \)` at position 3)`) — callers that just interpolate the error value directly get a readable message "for free".
Overridden here (rather than left to each case class) so it's picked up by every case class's synthesized toString slot instead of the default field dump they'd otherwise generate (InvalidSyntax((abc,3,expected \)` at position 3)`) — callers that just interpolate the error value directly get a readable message "for free".