Skip to content

Commit

Permalink
Remove a hack from compare_predicate_entailment
Browse files Browse the repository at this point in the history
  • Loading branch information
compiler-errors committed Nov 22, 2022
1 parent 28a53cd commit 1c1778d
Showing 1 changed file with 1 addition and 11 deletions.
12 changes: 1 addition & 11 deletions compiler/rustc_hir_analysis/src/check/compare_method.rs
Original file line number Diff line number Diff line change
Expand Up @@ -291,17 +291,7 @@ fn compare_predicate_entailment<'tcx>(
// type would be more appropriate. In other places we have a `Vec<Span>`
// corresponding to their `Vec<Predicate>`, but we don't have that here.
// Fixing this would improve the output of test `issue-83765.rs`.
let mut result = ocx.sup(&cause, param_env, trait_fty, impl_fty);

// HACK(RPITIT): #101614. When we are trying to infer the hidden types for
// RPITITs, we need to equate the output tys instead of just subtyping. If
// we just use `sup` above, we'll end up `&'static str <: _#1t`, which causes
// us to infer `_#1t = #'_#2r str`, where `'_#2r` is unconstrained, which gets
// fixed up to `ReEmpty`, and which is certainly not what we want.
if trait_fty.has_infer_types() {
result =
result.and_then(|()| ocx.eq(&cause, param_env, trait_sig.output(), impl_sig.output()));
}
let result = ocx.sup(&cause, param_env, trait_fty, impl_fty);

if let Err(terr) = result {
debug!(?terr, "sub_types failed: impl ty {:?}, trait ty {:?}", impl_fty, trait_fty);
Expand Down

0 comments on commit 1c1778d

Please sign in to comment.