diff options
| author | bors <bors@rust-lang.org> | 2022-04-28 13:18:22 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-04-28 13:18:22 +0000 |
| commit | b2c2a32870e15af02eb89de434c36535439dbf5a (patch) | |
| tree | ba0c7a3ceade56983d473ea859a3adb3af4bd973 /compiler/rustc_trait_selection/src/traits | |
| parent | 3bfeffd55bbc7d653d2df7ad265746bafe595a96 (diff) | |
| parent | ef5f07256cfa4e1f43a18acb45e0d8108f8471a4 (diff) | |
Auto merge of #95976 - b-naber:valtree-constval-conversion, r=oli-obk
Implement Valtree to ConstValue conversion Once we start to use `ValTree`s in the type system we will need to be able to convert them into `ConstValue` instances, which we want to continue to use after MIR construction. r? `@oli-obk` cc `@RalfJung`
Diffstat (limited to 'compiler/rustc_trait_selection/src/traits')
| -rw-r--r-- | compiler/rustc_trait_selection/src/traits/project.rs | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/compiler/rustc_trait_selection/src/traits/project.rs b/compiler/rustc_trait_selection/src/traits/project.rs index 8ba390c71db..c7a61cbe25a 100644 --- a/compiler/rustc_trait_selection/src/traits/project.rs +++ b/compiler/rustc_trait_selection/src/traits/project.rs @@ -1519,18 +1519,22 @@ fn assemble_candidates_from_impls<'cx, 'tcx>( // Any type with multiple potential metadata types is therefore not eligible. let self_ty = selcx.infcx().shallow_resolve(obligation.predicate.self_ty()); - let tail = selcx.tcx().struct_tail_with_normalize(self_ty, |ty| { - // We throw away any obligations we get from this, since we normalize - // and confirm these obligations once again during confirmation - normalize_with_depth( - selcx, - obligation.param_env, - obligation.cause.clone(), - obligation.recursion_depth + 1, - ty, - ) - .value - }); + let tail = selcx.tcx().struct_tail_with_normalize( + self_ty, + |ty| { + // We throw away any obligations we get from this, since we normalize + // and confirm these obligations once again during confirmation + normalize_with_depth( + selcx, + obligation.param_env, + obligation.cause.clone(), + obligation.recursion_depth + 1, + ty, + ) + .value + }, + || {}, + ); match tail.kind() { ty::Bool |
