diff options
| author | bors <bors@rust-lang.org> | 2023-07-17 01:06:36 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-07-17 01:06:36 +0000 |
| commit | 4c7af429f3122cbde3df648783e9b4d31cd62525 (patch) | |
| tree | 6bbf42943909e40177cb55bbd7be2fce0e54ef46 /compiler/rustc_trait_selection/src/traits | |
| parent | f1eab64d4f7ece5eead36098cdaeb1a8f0d5405c (diff) | |
| parent | c9ce51b5c78541bef1a3b3de61655629deef77b1 (diff) | |
| download | rust-4c7af429f3122cbde3df648783e9b4d31cd62525.tar.gz rust-4c7af429f3122cbde3df648783e9b4d31cd62525.zip | |
Auto merge of #113336 - compiler-errors:new-solver-iat, r=lcnr
Add support for inherent projections in new solver Not hard to support these, and it cuts out a really big chunk of failing UI tests with `--compare-mode=next-solver` r? `@lcnr` (feel free to reassign, anyone can review this)
Diffstat (limited to 'compiler/rustc_trait_selection/src/traits')
| -rw-r--r-- | compiler/rustc_trait_selection/src/traits/project.rs | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/compiler/rustc_trait_selection/src/traits/project.rs b/compiler/rustc_trait_selection/src/traits/project.rs index e137ed9cda8..a39fc1f1771 100644 --- a/compiler/rustc_trait_selection/src/traits/project.rs +++ b/compiler/rustc_trait_selection/src/traits/project.rs @@ -1402,9 +1402,17 @@ pub fn compute_inherent_assoc_ty_args<'a, 'b, 'tcx>( let impl_def_id = tcx.parent(alias_ty.def_id); let impl_args = selcx.infcx.fresh_args_for_item(cause.span, impl_def_id); - let impl_ty = tcx.type_of(impl_def_id).instantiate(tcx, impl_args); - let impl_ty = - normalize_with_depth_to(selcx, param_env, cause.clone(), depth + 1, impl_ty, obligations); + let mut impl_ty = tcx.type_of(impl_def_id).instantiate(tcx, impl_args); + if !selcx.infcx.next_trait_solver() { + impl_ty = normalize_with_depth_to( + selcx, + param_env, + cause.clone(), + depth + 1, + impl_ty, + obligations, + ); + } // Infer the generic parameters of the impl by unifying the // impl type with the self type of the projection. @@ -1421,7 +1429,7 @@ pub fn compute_inherent_assoc_ty_args<'a, 'b, 'tcx>( } } - alias_ty.rebase_args_onto_impl(impl_args, tcx) + alias_ty.rebase_inherent_args_onto_impl(impl_args, tcx) } enum Projected<'tcx> { |
