Process registered region obligation in resolve_regions_with_wf_tys
This commit is contained in:
parent
43dd3d514b
commit
db3b01d2bf
@ -713,6 +713,10 @@ fn resolve_regions_with_wf_tys<'tcx>(
|
|||||||
|
|
||||||
add_constraints(&infcx, region_bound_pairs);
|
add_constraints(&infcx, region_bound_pairs);
|
||||||
|
|
||||||
|
infcx.process_registered_region_obligations(
|
||||||
|
outlives_environment.region_bound_pairs(),
|
||||||
|
param_env,
|
||||||
|
);
|
||||||
let errors = infcx.resolve_regions(&outlives_environment);
|
let errors = infcx.resolve_regions(&outlives_environment);
|
||||||
|
|
||||||
debug!(?errors, "errors");
|
debug!(?errors, "errors");
|
||||||
|
22
src/test/ui/wf/issue-103573.rs
Normal file
22
src/test/ui/wf/issue-103573.rs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
trait TraitA {
|
||||||
|
type TypeA;
|
||||||
|
}
|
||||||
|
|
||||||
|
trait TraitD {
|
||||||
|
type TypeD;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub trait TraitB {
|
||||||
|
type TypeB: TraitD;
|
||||||
|
|
||||||
|
fn f(_: &<Self::TypeB as TraitD>::TypeD);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub trait TraitC<E> {
|
||||||
|
type TypeC<'a>: TraitB;
|
||||||
|
|
||||||
|
fn g<'a>(_: &<<Self::TypeC<'a> as TraitB>::TypeB as TraitA>::TypeA);
|
||||||
|
//~^ ERROR the trait bound `<<Self as TraitC<E>>::TypeC<'a> as TraitB>::TypeB: TraitA` is not satisfied
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
14
src/test/ui/wf/issue-103573.stderr
Normal file
14
src/test/ui/wf/issue-103573.stderr
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
error[E0277]: the trait bound `<<Self as TraitC<E>>::TypeC<'a> as TraitB>::TypeB: TraitA` is not satisfied
|
||||||
|
--> $DIR/issue-103573.rs:18:5
|
||||||
|
|
|
||||||
|
LL | fn g<'a>(_: &<<Self::TypeC<'a> as TraitB>::TypeB as TraitA>::TypeA);
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `TraitA` is not implemented for `<<Self as TraitC<E>>::TypeC<'a> as TraitB>::TypeB`
|
||||||
|
|
|
||||||
|
help: consider further restricting the associated type
|
||||||
|
|
|
||||||
|
LL | fn g<'a>(_: &<<Self::TypeC<'a> as TraitB>::TypeB as TraitA>::TypeA) where <<Self as TraitC<E>>::TypeC<'a> as TraitB>::TypeB: TraitA;
|
||||||
|
| +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0277`.
|
Loading…
x
Reference in New Issue
Block a user