diff options
| author | xFrednet <xFrednet@gmail.com> | 2022-03-05 21:54:49 +0100 | 
|---|---|---|
| committer | xFrednet <xFrednet@gmail.com> | 2022-03-07 18:08:30 +0100 | 
| commit | 47f3f66240eb20da1cd7583115a6ea1a2d25e388 (patch) | |
| tree | 7dedae62b56508effce8134ab01b543a58a3e8f5 /compiler/rustc_errors/src/lib.rs | |
| parent | 1b14fd3b1063771923e2fcf2110961bfa5ba4ad0 (diff) | |
| download | rust-47f3f66240eb20da1cd7583115a6ea1a2d25e388.tar.gz rust-47f3f66240eb20da1cd7583115a6ea1a2d25e388.zip | |
Update unstable `ExpectationId`s in stored diagnostics
Diffstat (limited to 'compiler/rustc_errors/src/lib.rs')
| -rw-r--r-- | compiler/rustc_errors/src/lib.rs | 29 | 
1 files changed, 17 insertions, 12 deletions
| diff --git a/compiler/rustc_errors/src/lib.rs b/compiler/rustc_errors/src/lib.rs index 217d3ec2c24..cba06448c4a 100644 --- a/compiler/rustc_errors/src/lib.rs +++ b/compiler/rustc_errors/src/lib.rs @@ -522,6 +522,11 @@ impl Drop for HandlerInner { "no warnings or errors encountered even though `delayed_good_path_bugs` issued", ); } + + assert!( + self.unstable_expect_diagnostics.is_empty(), + "all diagnostics with unstable expectations should have been converted", + ); } } @@ -942,25 +947,25 @@ impl Handler { let mut inner = self.inner.borrow_mut(); for mut diag in diags.into_iter() { - let mut unstable_id = diag + diag.update_unstable_expectation_id(unstable_to_stable); + + let stable_id = diag .level .get_expectation_id() .expect("all diagnostics inside `unstable_expect_diagnostics` must have a `LintExpectationId`"); - - // The unstable to stable map only maps the unstable `AttrId` to a stable `HirId` with an attribute index. - // The lint index inside the attribute is manually transferred here. - let lint_index = unstable_id.get_lint_index(); - unstable_id.set_lint_index(None); - let mut stable_id = *unstable_to_stable - .get(&unstable_id) - .expect("each unstable `LintExpectationId` must have a matching stable id"); - - stable_id.set_lint_index(lint_index); - diag.level = Level::Expect(stable_id); inner.fulfilled_expectations.insert(stable_id); (*TRACK_DIAGNOSTICS)(&diag); } + + inner + .stashed_diagnostics + .values_mut() + .for_each(|diag| diag.update_unstable_expectation_id(unstable_to_stable)); + inner + .future_breakage_diagnostics + .iter_mut() + .for_each(|diag| diag.update_unstable_expectation_id(unstable_to_stable)); } /// This methods steals all [`LintExpectationId`]s that are stored inside | 
