Auto merge of #116849 - oli-obk:error_shenanigans, r=cjgillot
Avoid a `track_errors` by bubbling up most errors from `check_well_formed` I believe `track_errors` is mostly papering over issues that a sufficiently convoluted query graph can hit. I made this change, while the actual change I want to do is to stop bailing out early on errors, and instead use this new `ErrorGuaranteed` to invoke `check_well_formed` for individual items before doing all the `typeck` logic on them. This works towards resolving https://github.com/rust-lang/rust/issues/97477 and various other ICEs, as well as allowing us to use parallel rustc more (which is currently rather limited/bottlenecked due to the very sequential nature in which we do `rustc_hir_analysis::check_crate`) cc `@SparrowLii` `@Zoxc` for the new `try_par_for_each_in` function
This commit is contained in:
commit
a56bd2b944
36 changed files with 425 additions and 310 deletions
|
@ -2247,7 +2247,7 @@ where
|
|||
|
||||
/// Useful type to use with `Result<>` indicate that an error has already
|
||||
/// been reported to the user, so no need to continue checking.
|
||||
#[derive(Clone, Copy, Debug, Encodable, Decodable, Hash, PartialEq, Eq, PartialOrd, Ord)]
|
||||
#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
|
||||
#[derive(HashStable_Generic)]
|
||||
pub struct ErrorGuaranteed(());
|
||||
|
||||
|
@ -2259,3 +2259,20 @@ impl ErrorGuaranteed {
|
|||
ErrorGuaranteed(())
|
||||
}
|
||||
}
|
||||
|
||||
impl<E: rustc_serialize::Encoder> Encodable<E> for ErrorGuaranteed {
|
||||
#[inline]
|
||||
fn encode(&self, _e: &mut E) {
|
||||
panic!(
|
||||
"should never serialize an `ErrorGuaranteed`, as we do not write metadata or incremental caches in case errors occurred"
|
||||
)
|
||||
}
|
||||
}
|
||||
impl<D: rustc_serialize::Decoder> Decodable<D> for ErrorGuaranteed {
|
||||
#[inline]
|
||||
fn decode(_d: &mut D) -> ErrorGuaranteed {
|
||||
panic!(
|
||||
"`ErrorGuaranteed` should never have been serialized to metadata or incremental caches"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue