Rollup merge of #108947 - compiler-errors:ct-infer-no-shapeshifting, r=BoxyUwU
Don't even try to combine consts with incompatible types ~I left a more detailed explanation for why this fixes this issue in the UI test, but in general, we should not try to unify const infer vars and rigid consts if they have incompatible types. That's because we don't want something like a `ConstArgHasType` predicate to suddenly go from passing to failing, or vice versa, due to a shallow resolve.~ 1. Use the `type_of` for a parameter in `try_eval_lit_or_param`, instead of the "expected" type from a `WithOptConstParam` def id. 2. Don't combine consts that have incompatible types. Fixes #108781
This commit is contained in:
commit
145e6204bc
11 changed files with 74 additions and 34 deletions
|
@ -99,10 +99,10 @@ pub fn translate_substs<'tcx>(
|
|||
}
|
||||
|
||||
fulfill_implication(infcx, param_env, source_trait_ref, target_impl).unwrap_or_else(
|
||||
|_| {
|
||||
|()| {
|
||||
bug!(
|
||||
"When translating substitutions for specialization, the expected \
|
||||
specialization failed to hold"
|
||||
"When translating substitutions from {source_impl:?} to {target_impl:?}, \
|
||||
the expected specialization failed to hold"
|
||||
)
|
||||
},
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue