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_ast::{ast, attr, ptr};
|
||||||
use rustc_errors::Diag;
|
use rustc_errors::Diag;
|
||||||
use rustc_parse::parser::Parser as RawParser;
|
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 rustc_span::{sym, Span};
|
||||||
use thin_vec::ThinVec;
|
use thin_vec::ThinVec;
|
||||||
|
|
||||||
@ -51,13 +51,10 @@ pub(crate) fn build(self) -> Result<Parser<'a>, ParserError> {
|
|||||||
|
|
||||||
let parser = match Self::parser(psess.inner(), input) {
|
let parser = match Self::parser(psess.inner(), input) {
|
||||||
Ok(p) => p,
|
Ok(p) => p,
|
||||||
Err(db) => {
|
Err(diagnostics) => {
|
||||||
if let Some(diagnostics) = db {
|
|
||||||
psess.emit_diagnostics(diagnostics);
|
psess.emit_diagnostics(diagnostics);
|
||||||
return Err(ParserError::ParserCreationError);
|
return Err(ParserError::ParserCreationError);
|
||||||
}
|
}
|
||||||
return Err(ParserError::ParsePanicError);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(Parser { parser })
|
Ok(Parser { parser })
|
||||||
@ -66,18 +63,14 @@ pub(crate) fn build(self) -> Result<Parser<'a>, ParserError> {
|
|||||||
fn parser(
|
fn parser(
|
||||||
psess: &'a rustc_session::parse::ParseSess,
|
psess: &'a rustc_session::parse::ParseSess,
|
||||||
input: Input,
|
input: Input,
|
||||||
) -> Result<rustc_parse::parser::Parser<'a>, Option<Vec<Diag<'a>>>> {
|
) -> Result<RawParser<'a>, Vec<Diag<'a>>> {
|
||||||
match input {
|
match input {
|
||||||
Input::File(ref file) => catch_unwind(AssertUnwindSafe(move || {
|
Input::File(ref file) => new_parser_from_file(psess, file, None),
|
||||||
unwrap_or_emit_fatal(new_parser_from_file(psess, file, None))
|
Input::Text(text) => new_parser_from_source_str(
|
||||||
}))
|
|
||||||
.map_err(|_| None),
|
|
||||||
Input::Text(text) => rustc_parse::new_parser_from_source_str(
|
|
||||||
psess,
|
psess,
|
||||||
rustc_span::FileName::Custom("stdin".to_owned()),
|
rustc_span::FileName::Custom("stdin".to_owned()),
|
||||||
text,
|
text,
|
||||||
)
|
),
|
||||||
.map_err(Some),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user