rustfmt: Remove an unnecessary catch_unwind
use.
The `Input::File` and `Input::Text` cases should be very similar. However, currently the `Input::File` case uses `catch_unwind` because, until recently (#125815) there was a fallible version of `new_parser_from_source_str` but only an infallible version of `new_parser_from_file`. This difference wasn't fundamental, just an overlooked gap in the API of `rustc_parse`. Both of those operations are now fallible, so the `Input::File` and `Input::Text` cases can made more similar, with no need for `catch_unwind`. This also lets us simplify an `Option<Vec<Diag>>` to `Vec<Diag>`.
This commit is contained in:
parent
5962aa96f1
commit
ecb2dd151c
@ -5,7 +5,7 @@
|
||||
use rustc_ast::{ast, attr, ptr};
|
||||
use rustc_errors::Diag;
|
||||
use rustc_parse::parser::Parser as RawParser;
|
||||
use rustc_parse::{new_parser_from_file, unwrap_or_emit_fatal};
|
||||
use rustc_parse::{new_parser_from_file, new_parser_from_source_str, unwrap_or_emit_fatal};
|
||||
use rustc_span::{sym, Span};
|
||||
use thin_vec::ThinVec;
|
||||
|
||||
@ -51,12 +51,9 @@ pub(crate) fn build(self) -> Result<Parser<'a>, ParserError> {
|
||||
|
||||
let parser = match Self::parser(psess.inner(), input) {
|
||||
Ok(p) => p,
|
||||
Err(db) => {
|
||||
if let Some(diagnostics) = db {
|
||||
psess.emit_diagnostics(diagnostics);
|
||||
return Err(ParserError::ParserCreationError);
|
||||
}
|
||||
return Err(ParserError::ParsePanicError);
|
||||
Err(diagnostics) => {
|
||||
psess.emit_diagnostics(diagnostics);
|
||||
return Err(ParserError::ParserCreationError);
|
||||
}
|
||||
};
|
||||
|
||||
@ -66,18 +63,14 @@ pub(crate) fn build(self) -> Result<Parser<'a>, ParserError> {
|
||||
fn parser(
|
||||
psess: &'a rustc_session::parse::ParseSess,
|
||||
input: Input,
|
||||
) -> Result<rustc_parse::parser::Parser<'a>, Option<Vec<Diag<'a>>>> {
|
||||
) -> Result<RawParser<'a>, Vec<Diag<'a>>> {
|
||||
match input {
|
||||
Input::File(ref file) => catch_unwind(AssertUnwindSafe(move || {
|
||||
unwrap_or_emit_fatal(new_parser_from_file(psess, file, None))
|
||||
}))
|
||||
.map_err(|_| None),
|
||||
Input::Text(text) => rustc_parse::new_parser_from_source_str(
|
||||
Input::File(ref file) => new_parser_from_file(psess, file, None),
|
||||
Input::Text(text) => new_parser_from_source_str(
|
||||
psess,
|
||||
rustc_span::FileName::Custom("stdin".to_owned()),
|
||||
text,
|
||||
)
|
||||
.map_err(Some),
|
||||
),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user