1
Fork 0

Rollup merge of #109109 - compiler-errors:polymorphize-foreign, r=Nilstrieb

Use `unused_generic_params` from crate metadata

Due to the way that `separate_provide_extern` interacted with the implementation of `<ty::InstanceDef<'tcx> as Key>::query_crate_is_local`, we actually never hit the foreign provider for `unused_generic_params`.

Additionally, since the *local* provider of `unused_generic_params` calls `should_polymorphize`, which always returns false if the def-id is foreign, this means that we never actually polymorphize monomorphic instances originating from foreign crates.

We don't actually encode `unused_generic_params` for items where all generics are used, so I had to tweak the foreign provider to fall back to `ty::UnusedGenericParams::new_all_used()` to avoid more ICEs when the above bugs were fixed.
This commit is contained in:
Dylan DPC 2023-03-15 17:51:31 +05:30 committed by GitHub
commit 2aa3eea5fc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 28 additions and 10 deletions

View file

@ -63,7 +63,7 @@ impl<'tcx> Key for ty::InstanceDef<'tcx> {
#[inline(always)]
fn query_crate_is_local(&self) -> bool {
true
self.def_id().is_local()
}
fn default_span(&self, tcx: TyCtxt<'_>) -> Span {
@ -76,7 +76,7 @@ impl<'tcx> Key for ty::Instance<'tcx> {
#[inline(always)]
fn query_crate_is_local(&self) -> bool {
true
self.def_id().is_local()
}
fn default_span(&self, tcx: TyCtxt<'_>) -> Span {