skip rpit constraint check if borrowck return type error
This commit is contained in:
parent
5e7025419d
commit
64e311add2
@ -278,6 +278,10 @@ pub(super) fn find_opaque_ty_constraints_for_rpit<'tcx>(
|
|||||||
|
|
||||||
let mir_opaque_ty = tcx.mir_borrowck(owner_def_id).concrete_opaque_types.get(&def_id).copied();
|
let mir_opaque_ty = tcx.mir_borrowck(owner_def_id).concrete_opaque_types.get(&def_id).copied();
|
||||||
if let Some(mir_opaque_ty) = mir_opaque_ty {
|
if let Some(mir_opaque_ty) = mir_opaque_ty {
|
||||||
|
if mir_opaque_ty.references_error() {
|
||||||
|
return mir_opaque_ty.ty;
|
||||||
|
}
|
||||||
|
|
||||||
let scope = tcx.local_def_id_to_hir_id(owner_def_id);
|
let scope = tcx.local_def_id_to_hir_id(owner_def_id);
|
||||||
debug!(?scope);
|
debug!(?scope);
|
||||||
let mut locator = RpitConstraintChecker { def_id, tcx, found: mir_opaque_ty };
|
let mut locator = RpitConstraintChecker { def_id, tcx, found: mir_opaque_ty };
|
||||||
|
10
tests/ui/traits/issue-117794.rs
Normal file
10
tests/ui/traits/issue-117794.rs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
trait Foo {}
|
||||||
|
|
||||||
|
trait T {
|
||||||
|
fn a(&self) -> impl Foo {
|
||||||
|
self.b(|| 0)
|
||||||
|
//~^ ERROR no method named `b` found for reference `&Self` in the current scope
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
9
tests/ui/traits/issue-117794.stderr
Normal file
9
tests/ui/traits/issue-117794.stderr
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
error[E0599]: no method named `b` found for reference `&Self` in the current scope
|
||||||
|
--> $DIR/issue-117794.rs:5:14
|
||||||
|
|
|
||||||
|
LL | self.b(|| 0)
|
||||||
|
| ^ help: there is a method with a similar name: `a`
|
||||||
|
|
||||||
|
error: aborting due to 1 previous error
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0599`.
|
Loading…
Reference in New Issue
Block a user