mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 07:14:28 +00:00
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);
|
||||
|
||||
infcx.process_registered_region_obligations(
|
||||
outlives_environment.region_bound_pairs(),
|
||||
param_env,
|
||||
);
|
||||
let errors = infcx.resolve_regions(&outlives_environment);
|
||||
|
||||
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…
Reference in New Issue
Block a user