Skip to content

Commit

Permalink
Erase ReError properly
Browse files Browse the repository at this point in the history
  • Loading branch information
compiler-errors committed May 14, 2023
1 parent eda41ad commit bd31d9e
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 1 deletion.
4 changes: 3 additions & 1 deletion compiler/rustc_middle/src/ty/sty.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1708,7 +1708,9 @@ impl<'tcx> Region<'tcx> {
ty::ReErased => {
flags = flags | TypeFlags::HAS_RE_ERASED;
}
ty::ReError(_) => {}
ty::ReError(_) => {
flags = flags | TypeFlags::HAS_FREE_REGIONS;
}
}

debug!("type_flags({:?}) = {:?}", self, flags);
Expand Down
23 changes: 23 additions & 0 deletions tests/ui/borrowck/erase-error-in-mir-drop-tracking.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// compile-flags: -Zdrop-tracking-mir
// edition:2021

use std::future::Future;

trait Client {
type Connecting<'a>: Future + Send
where
Self: 'a;

fn connect(&'_ self) -> Self::Connecting<'a>;
//~^ ERROR use of undeclared lifetime name `'a`
}

fn call_connect<C>(c: &'_ C) -> impl '_ + Future + Send
where
C: Client + Send + Sync,
{
async move { c.connect().await }
//~^ ERROR `C` does not live long enough
}

fn main() {}
24 changes: 24 additions & 0 deletions tests/ui/borrowck/erase-error-in-mir-drop-tracking.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
error[E0261]: use of undeclared lifetime name `'a`
--> $DIR/erase-error-in-mir-drop-tracking.rs:11:46
|
LL | fn connect(&'_ self) -> Self::Connecting<'a>;
| ^^ undeclared lifetime
|
help: consider introducing lifetime `'a` here
|
LL | fn connect<'a>(&'_ self) -> Self::Connecting<'a>;
| ++++
help: consider introducing lifetime `'a` here
|
LL | trait Client<'a> {
| ++++

error: `C` does not live long enough
--> $DIR/erase-error-in-mir-drop-tracking.rs:19:5
|
LL | async move { c.connect().await }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0261`.

0 comments on commit bd31d9e

Please sign in to comment.