Change:
<!-- Thank you for finding an Internal Compiler Error! If possible, try to provide a minimal verifiable example. You can read "Rust Bug Minimization Patterns" for how to create smaller examples. --<!-- If you're using the stable version of the compiler, you should also check if the bug also exists in the beta or nightly versions. --: <!-- Include a backtrace in the code block by setting in your environment. E.g. . --<details<summary<strongBacktrace</strong</summary<p</p</details<!-- TRIAGEBOTSTART --<!-- TRIAGEBOTASSIGNSTART --<!-- TRIAGEBOTASSIGNDATASTARTTRIAGEBOTASSIGNDATAEND --<!-- TRIAGEBOTASSIGNEND --<!-- TRIAGEBOTEND --
searched nightlies: from nightly-2023-10-01 to nightly-2023-11-04 regressed nightly: nightly-2023-10-12 searched commit range: regressed commit: <details<summarybisected with <a href=''cargo-bisect-rustc</av0.6.7</summaryHost triple: aarch64-apple-darwin Reproduce with: </details
That’s from cc was this done on purpose maybe to find cases like this?
Why the heck do we even resolve in the first place?! edit: This behavior changed in: commit[0] 2023-01-08: Auto merge of - GuillaumeGomez:rustdoc-gui-retry-mechanism, r=Mark-Simulacrum commit[1] 2023-01-08: Auto merge of - geeklint:loosenweakdebugbound, r=dtolnay commit[2] 2023-01-09: Auto merge of - compiler-errors:rollup-emcj0o3, r=compiler-errors commit[3] 2023-01-09: Auto merge of - compiler-errors:better-spans-on-bad-tys, r=lcnr commit[4] 2023-01-09: Auto merge of - saethlin:propagate-operands, r=oli-obk commit[5] 2023-01-09: Auto merge of - aliemjay:astconv-normalize, r=lcnr commit[6] 2023-01-09: Auto merge of - fee1-dead-contrib:rollup-ticvmsd, r=fee1-dead
Ah, it's because of the where-clause on . This would be fixed if checked wf in before normalization and not after, since that sufficiently constrains the self type of the projection so it can proceed in the query. cc:
This is ultimately fixed by , but until then the PR should be temporarily reverted (with a beta-1.75 backport). I'll do the revert when the crater run for beta-1.75 finishes in order to discover other regressions. The reverted commit is small and safe enough to backport at any time, I believe, so I'm fine with this. Please let me know if you think this should be done earlier. claim
Error and stacktrace look similar to (now solved). Or maybe this is just something different ?
WG-prioritization assigning priority (). label -I-prioritize +P-medium

Discussion:
} let mut region_constraints = QueryRegionConstraints::default(); <del> let (output, error_info, mut obligations) = Q::fully_perform_into(self, infcx, &mut region_constraints) .map_err(|_| { infcx.tcx.sess.span_delayed_bug(span, format!("error performing {self:?}")) }) .and_then(|(output, error_info, obligations, certainty)| match certainty { Certainty::Proven => Ok((output, error_info, obligations)), Certainty::Ambiguous => Err(infcx .tcx .sess .span_delayed_bug(span, format!("ambiguity performing {self:?}"))), })?; </del> <ins> let (output, error_info, mut obligations, _) = Q::fully_perform_into(self, infcx, &mut region_constraints).map_err(|_| { infcx.tcx.sess.span_delayed_bug(span, format!("error performing {self:?}")) })?; </ins> // Typically, instantiating NLL query results does not // create obligations. However, in some cases there

<ins> // The WF requirements of the *unnormalized* form of type annotations // can guide inference. // check-pass pub trait EqualTo { type Ty; } impl<X> EqualTo for X { type Ty = X; } trait MyTrait<U: EqualTo<Ty = Self>> { type Out; } impl<T, U: EqualTo<Ty = T>> MyTrait<U> for T { type Out = (); } fn main() { let _: <_ as MyTrait<u8>>::Out; // We shoud be able to infer a value for the inference variable above. // The WF of the unnormalized projection requires `u8: EqualTo<Ty = _>`, // which is sufficient to guide inference. } </ins>