fix RPIT ICE for implicit HRTB when missing dyn
This commit is contained in:
parent
2dc703fd6e
commit
3f45dc1472
4 changed files with 44 additions and 2 deletions
|
@ -1568,8 +1568,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
|||
|
||||
LifetimeRes::Fresh { param, binder: _ } => {
|
||||
debug_assert_eq!(lifetime.ident.name, kw::UnderscoreLifetime);
|
||||
let old_def_id = self.local_def_id(param);
|
||||
if remapping.get(&old_def_id).is_none() {
|
||||
if let Some(old_def_id) = self.opt_local_def_id(param) && remapping.get(&old_def_id).is_none() {
|
||||
let node_id = self.next_node_id();
|
||||
|
||||
let new_def_id = self.create_def(
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
error[E0277]: the trait bound `(): AsRef<(dyn for<'r> Fn(&'r ()) + 'static)>` is not satisfied
|
||||
--> $DIR/generic-with-implicit-hrtb-without-dyn.rs:6:13
|
||||
|
|
||||
LL | fn ice() -> impl AsRef<Fn(&())> {
|
||||
| ^^^^^^^^^^^^^^^^^^^ the trait `AsRef<(dyn for<'r> Fn(&'r ()) + 'static)>` is not implemented for `()`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
|
@ -0,0 +1,22 @@
|
|||
error[E0782]: trait objects must include the `dyn` keyword
|
||||
--> $DIR/generic-with-implicit-hrtb-without-dyn.rs:6:24
|
||||
|
|
||||
LL | fn ice() -> impl AsRef<Fn(&())> {
|
||||
| ^^^^^^^
|
||||
|
|
||||
help: add `dyn` keyword before this trait
|
||||
|
|
||||
LL - fn ice() -> impl AsRef<Fn(&())> {
|
||||
LL + fn ice() -> impl AsRef<dyn Fn(&())> {
|
||||
|
|
||||
|
||||
error[E0277]: the trait bound `(): AsRef<(dyn for<'r> Fn(&'r ()) + 'static)>` is not satisfied
|
||||
--> $DIR/generic-with-implicit-hrtb-without-dyn.rs:6:13
|
||||
|
|
||||
LL | fn ice() -> impl AsRef<Fn(&())> {
|
||||
| ^^^^^^^^^^^^^^^^^^^ the trait `AsRef<(dyn for<'r> Fn(&'r ()) + 'static)>` is not implemented for `()`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0277, E0782.
|
||||
For more information about an error, try `rustc --explain E0277`.
|
|
@ -0,0 +1,12 @@
|
|||
// revisions: edition2015 edition2021
|
||||
//[edition2021]edition:2021
|
||||
|
||||
#![allow(warnings)]
|
||||
|
||||
fn ice() -> impl AsRef<Fn(&())> {
|
||||
//~^ ERROR: the trait bound `(): AsRef<(dyn for<'r> Fn(&'r ()) + 'static)>` is not satisfied [E0277]
|
||||
//[edition2021]~| ERROR: trait objects must include the `dyn` keyword [E0782]
|
||||
todo!()
|
||||
}
|
||||
|
||||
fn main() {}
|
Loading…
Add table
Reference in a new issue