Let inherent associated types constrain opaque types during projection

This commit is contained in:
Oli Scherer 2024-04-19 16:12:54 +00:00
parent 07d0d7ce3f
commit dadece067e
2 changed files with 19 additions and 1 deletions

View File

@ -641,7 +641,7 @@ pub fn compute_inherent_assoc_ty_args<'a, 'b, 'tcx>(
); );
} }
match selcx.infcx.at(&cause, param_env).eq(DefineOpaqueTypes::No, impl_ty, self_ty) { match selcx.infcx.at(&cause, param_env).eq(DefineOpaqueTypes::Yes, impl_ty, self_ty) {
Ok(mut ok) => obligations.append(&mut ok.obligations), Ok(mut ok) => obligations.append(&mut ok.obligations),
Err(_) => { Err(_) => {
tcx.dcx().span_bug( tcx.dcx().span_bug(

View File

@ -0,0 +1,18 @@
//@ check-pass
#![feature(inherent_associated_types, type_alias_impl_trait)]
#![allow(incomplete_features)]
struct Foo<T>(T);
impl Foo<i32> {
type Assoc = u32;
}
type Tait = impl Sized;
fn bar(_: Tait) {
let x: Foo<Tait>::Assoc = 42;
}
fn main() {}