1
Fork 0

Auto merge of #107038 - compiler-errors:dont-wfcheck-non-local-rpit, r=oli-obk

Don't wf-check non-local RPITs

We were using `ty::is_impl_trait_defn(..).is_none()` to check if we need to add WF obligations for an opaque type.

This is *supposed* to be checking if the type is a TAIT, since RPITs' wfness is implied by wf checking its parent item, but since `is_impl_trait_defn` returns `None` for non-local RPIT and async futures, we unnecessarily consider wf predicates for an RPIT if it is coming from a foreign crate.

Fixes #107036

r? `@oli-obk` but feel free to reassign
This commit is contained in:
bors 2023-01-19 16:49:06 +00:00
commit 4c83bd03a9
10 changed files with 61 additions and 3 deletions

View file

@ -177,6 +177,12 @@ rustc_queries! {
separate_provide_extern
}
query is_type_alias_impl_trait(key: DefId) -> bool
{
desc { "determine whether the opaque is a type-alias impl trait" }
separate_provide_extern
}
query analysis(key: ()) -> Result<(), ErrorGuaranteed> {
eval_always
desc { "running analysis passes on this crate" }

View file

@ -52,6 +52,7 @@ trivially_parameterized_over_tcx! {
usize,
(),
u32,
bool,
std::string::String,
crate::metadata::ModChild,
crate::middle::codegen_fn_attrs::CodegenFnAttrs,