Remap RPITIT substs properly
This commit is contained in:
parent
a2037e3012
commit
32dae918a1
@ -2260,6 +2260,13 @@ fn confirm_impl_trait_in_trait_candidate<'tcx>(
|
||||
// since `data.substs` are the impl substs.
|
||||
let impl_fn_substs =
|
||||
obligation.predicate.substs.rebase_onto(tcx, tcx.parent(trait_fn_def_id), data.substs);
|
||||
let impl_fn_substs = translate_substs(
|
||||
selcx.infcx(),
|
||||
obligation.param_env,
|
||||
data.impl_def_id,
|
||||
impl_fn_substs,
|
||||
leaf_def.defining_node,
|
||||
);
|
||||
|
||||
if !check_substs_compatible(tcx, &leaf_def.item, impl_fn_substs) {
|
||||
let err = tcx.ty_error_with_message(
|
||||
|
@ -0,0 +1,24 @@
|
||||
// check-pass
|
||||
|
||||
#![feature(specialization)]
|
||||
#![feature(return_position_impl_trait_in_trait)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
trait Foo {
|
||||
fn bar(&self) -> impl Sized;
|
||||
}
|
||||
|
||||
impl<U> Foo for U
|
||||
where
|
||||
U: Copy,
|
||||
{
|
||||
fn bar(&self) -> U {
|
||||
*self
|
||||
}
|
||||
}
|
||||
|
||||
impl Foo for i32 {}
|
||||
|
||||
fn main() {
|
||||
let _: i32 = 1i32.bar();
|
||||
}
|
Loading…
Reference in New Issue
Block a user