propagate tainted_by_errors in MirBorrowckCtxt::emit_errors

This commit is contained in:
Folkert de Vries 2024-09-04 12:29:44 +02:00
parent 842d6fc32e
commit f7679d0507
7 changed files with 35 additions and 8 deletions

View File

@ -2522,7 +2522,7 @@ pub(crate) fn buffer_mut_error(&mut self, span: Span, diag: Diag<'infcx>, count:
}
pub(crate) fn emit_errors(&mut self) -> Option<ErrorGuaranteed> {
let mut res = None;
let mut res = self.infcx.tainted_by_errors();
// Buffer any move errors that we collected and de-duplicated.
for (_, (_, diag)) in std::mem::take(&mut self.diags.buffered_move_errors) {

View File

@ -16,7 +16,7 @@ impl Range for TwoDigits {
const fn digits(x: u8) -> usize {
match x {
TwoDigits::FIRST..=TwoDigits::LAST => 0,
TwoDigits::FIRST..=TwoDigits::LAST => 0, //~ ERROR: could not evaluate constant pattern
0..=9 | 100..=255 => panic!(),
}
}

View File

@ -4,5 +4,11 @@ error: missing type for `const` item
LL | const FIRST: = 10;
| ^ help: provide a type for the associated constant: `u8`
error: aborting due to 1 previous error
error: could not evaluate constant pattern
--> $DIR/missing_assoc_const_type.rs:19:9
|
LL | TwoDigits::FIRST..=TwoDigits::LAST => 0,
| ^^^^^^^^^^^^^^^^
error: aborting due to 2 previous errors

View File

@ -1,4 +1,5 @@
//@ known-bug: #124164
// reported as #124164
static S_COUNT: = std::sync::atomic::AtomicUsize::new(0);
//~^ ERROR: missing type for `static` item
fn main() {}

View File

@ -0,0 +1,8 @@
error: missing type for `static` item
--> $DIR/missing-type.rs:2:16
|
LL | static S_COUNT: = std::sync::atomic::AtomicUsize::new(0);
| ^ help: provide a type for the static variable: `AtomicUsize`
error: aborting due to 1 previous error

View File

@ -1,6 +1,7 @@
//@ known-bug: rust-lang/rust#126896
//@ compile-flags: -Zvalidate-mir -Zinline-mir=yes
// reported as rust-lang/rust#126896
#![feature(type_alias_impl_trait)]
type Two<'a, 'b> = impl std::fmt::Debug;
@ -9,9 +10,8 @@ fn set(x: &mut isize) -> isize {
}
fn d(x: Two) {
let c1 = || set(x);
let c1 = || set(x); //~ ERROR: expected generic lifetime parameter, found `'_`
c1;
}
fn main() {
}
fn main() {}

View File

@ -0,0 +1,12 @@
error[E0792]: expected generic lifetime parameter, found `'_`
--> $DIR/taint.rs:13:17
|
LL | type Two<'a, 'b> = impl std::fmt::Debug;
| -- this generic parameter must be used with a generic lifetime parameter
...
LL | let c1 = || set(x);
| ^^^^^^
error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0792`.