Description
While postponing the normalization of the return type as done in #86506 does fix #85671 there is likely some deeper underlying bug that causes this specific bug.
As mentioned by @jackh726:
Now that I'm looking at this, I actually understand the problem here. It's a bit weird. Because of the Self: AsSlice<Element = Coef> bound, we end up with a predicate <A as AsSlice>::Element = Coef in the param_env when type checking failing. Then, later, we try to normalize <A<_#3t> as AsSlice>::Element. We then use that predicate in the param_env as a candidate, unifying _#3t with Cont and getting a result of Coef.
That also causes our self_ty to gets inferred to be &ReErased A. This doesn't match &ReErased A<&'_#1r [Coef]>.
Delaying normalization of the return type does work, but I think that it hides a deeper bug. Ideally, I think the problem is the param_env itself. The clauses here probably shouldn't have Params, but instead either fresh vars or maybe just be canonicalized.