diff options
| author | bors <bors@rust-lang.org> | 2025-01-15 09:20:25 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2025-01-15 09:20:25 +0000 |
| commit | 2776bdfe423c9fdfcd6313d678f0852ea26f1309 (patch) | |
| tree | 3db4eb13790bbab54261f589cfebc0a002494e44 /compiler/rustc_monomorphize/src | |
| parent | 00ded39014a4a9cab60d1819a832c2888415e5f9 (diff) | |
| parent | 8e91327e7128d9315782750f7914657d2053ff58 (diff) | |
| download | rust-2776bdfe423c9fdfcd6313d678f0852ea26f1309.tar.gz rust-2776bdfe423c9fdfcd6313d678f0852ea26f1309.zip | |
Auto merge of #135525 - jhpratt:rollup-4gu2wpm, r=jhpratt
Rollup of 7 pull requests Successful merges: - #132397 (Make missing_abi lint warn-by-default.) - #133807 (ci: Enable opt-dist for dist-aarch64-linux builds) - #134143 (Convert `struct FromBytesWithNulError` into enum) - #134338 (Use a C-safe return type for `__rust_[ui]128_*` overflowing intrinsics) - #134678 (Update `ReadDir::next` in `std::sys::pal::unix::fs` to use `&raw const (*p).field` instead of `p.byte_offset().cast()`) - #135424 (Detect unstable lint docs that dont enable their feature) - #135520 (Make sure we actually use the right trivial lifetime substs when eagerly monomorphizing drop for ADTs) r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_monomorphize/src')
| -rw-r--r-- | compiler/rustc_monomorphize/src/collector.rs | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/compiler/rustc_monomorphize/src/collector.rs b/compiler/rustc_monomorphize/src/collector.rs index 0f3943cfe6a..bb603df1129 100644 --- a/compiler/rustc_monomorphize/src/collector.rs +++ b/compiler/rustc_monomorphize/src/collector.rs @@ -1410,19 +1410,33 @@ impl<'v> RootCollector<'_, 'v> { && !self.tcx.generics_of(id.owner_id).requires_monomorphization(self.tcx) { debug!("RootCollector: ADT drop-glue for `{id:?}`",); + let id_args = + ty::GenericArgs::for_item(self.tcx, id.owner_id.to_def_id(), |param, _| { + match param.kind { + GenericParamDefKind::Lifetime => { + self.tcx.lifetimes.re_erased.into() + } + GenericParamDefKind::Type { .. } + | GenericParamDefKind::Const { .. } => { + unreachable!( + "`own_requires_monomorphization` check means that \ + we should have no type/const params" + ) + } + } + }); // This type is impossible to instantiate, so we should not try to // generate a `drop_in_place` instance for it. if self.tcx.instantiate_and_check_impossible_predicates(( id.owner_id.to_def_id(), - ty::List::empty(), + id_args, )) { return; } - let ty = self.tcx.erase_regions( - self.tcx.type_of(id.owner_id.to_def_id()).instantiate_identity(), - ); + let ty = + self.tcx.type_of(id.owner_id.to_def_id()).instantiate(self.tcx, id_args); assert!(!ty.has_non_region_param()); visit_drop_use(self.tcx, ty, true, DUMMY_SP, self.output); } |
