Parse Error return an Error instead of a successful empty response

This commit is contained in:
Tibo Delor 2018-06-10 00:25:06 +10:00
parent 34067a1c4c
commit 8c32a9d909
No known key found for this signature in database
GPG Key ID: 2DF74CAC68BE8FCD

View File

@ -132,6 +132,9 @@ pub enum ErrorKind {
/// An io error during reading or writing.
#[fail(display = "io error: {}", _0)]
IoError(io::Error),
/// Parse error occured when parsing the Input.
#[fail(display = "parse error")]
ParseError,
/// The user mandated a version and the current version of Rustfmt does not
/// satisfy that requirement.
#[fail(display = "Version mismatch")]
@ -172,9 +175,10 @@ fn from_span(span: &Span, codemap: &CodeMap, kind: ErrorKind) -> FormattingError
}
fn msg_prefix(&self) -> &str {
match self.kind {
ErrorKind::LineOverflow(..) | ErrorKind::TrailingWhitespace | ErrorKind::IoError(_) => {
"internal error:"
}
ErrorKind::LineOverflow(..)
| ErrorKind::TrailingWhitespace
| ErrorKind::IoError(_)
| ErrorKind::ParseError => "internal error:",
ErrorKind::LicenseCheck | ErrorKind::BadAttr | ErrorKind::VersionMismatch => "error:",
ErrorKind::BadIssue(_) | ErrorKind::DeprecatedAttr => "warning:",
}
@ -844,7 +848,7 @@ fn format_input_inner<T: Write>(
ParseError::Recovered => {}
}
summary.add_parsing_error();
return Ok((summary, FileMap::new(), FormatReport::new()));
return Err((ErrorKind::ParseError, summary));
}
};