/// <summary>
 ///     Initializes a new instance of the <see cref="ParseErrorException" /> class.
 /// </summary>
 /// <param name="error">The error message.</param>
 /// <param name="expression">The expression.</param>
 /// <param name="location">The error location.</param>
 /// <param name="innerException">The inner exception.</param>
 public ParseErrorException(string error, string expression, Location location, Exception innerException)
     : base(location.BuildParseError(error, expression), innerException)
 {
     Error = error;
     Expression = expression;
     Location = location.Clone();
 }
 /// <summary>
 ///     Initializes a new instance of the <see cref="ParseErrorException" /> class.
 /// </summary>
 /// <param name="error">The error message.</param>
 /// <param name="expression">The expression.</param>
 /// <param name="location">The error location.</param>
 /// <param name="innerException">The inner exception.</param>
 public ParseErrorException(string error, string expression, Location location, Exception innerException)
     : base(location.BuildParseError(error, expression), innerException)
 {
     Error      = error;
     Expression = expression;
     Location   = location.Clone();
 }
 public void verify_error_message_construction_for_boundary_conditions(Location location, string expression)
 {
     Assert.Equal(
         $@"Parse error on line {location.Line}, last column: error message",
         location.BuildParseError("error message", expression));
 }
 public void verify_error_message_construction(Location location, string indication, string expression)
 {
     Assert.Equal(
         $@"Parse error on line {location.Line}, column {location.Column}:
     ... {indication} ...
     ^--- error message",
         location.BuildParseError("error message", expression));
 }