rust/compiler
bors 11663cd3bf Auto merge of #134486 - compiler-errors:drop-for-lint, r=nikomatsakis
Make sure we handle `backwards_incompatible_lint` drops appropriately in drop elaboration

In #131326, a new kind of scheduled drop (`drop_kind: DropKind::Value` + `backwards_incompatible_lint: true`) was added so that we could insert a new kind of no-op MIR statement (`backward incompatible drop`) for linting purposes.

These drops were intended to have *no side-effects*, but drop elaboration code forgot to handle these drops specially and they were handled otherwise as normal drops in most of the code. This ends up being **unsound** since we insert more than one drop call for some values, which means that `Drop::drop` could be called more than once.

This PR fixes this by splitting out the `DropKind::ForLint` and adjusting the code. I'm not totally certain if all of the places I've adjusted are either reachable or correct, but I'm pretty certain that it's *more* correct than it was previously.

cc `@dingxiangfei2009`
r? nikomatsakis

Fixes #134482
2024-12-19 15:58:08 +00:00
..
rustc switch jemalloc-sys back to tikv-jemalloc-sys, and update to 0.6.0 2024-12-03 08:56:33 +00:00
rustc_abi make no-variant types a dedicated Variants variant 2024-12-18 11:01:54 +01:00
rustc_arena move strict provenance lints to new feature gate, remove old feature gates 2024-10-21 15:22:17 +01:00
rustc_ast Rollup merge of #134253 - nnethercote:overhaul-keywords, r=petrochenkov 2024-12-18 22:56:53 +08:00
rustc_ast_ir
rustc_ast_lowering Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_ast_passes Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_ast_pretty Rollup merge of #134161 - nnethercote:overhaul-token-cursors, r=spastorino 2024-12-18 22:56:53 +08:00
rustc_attr_data_structures rename rustc_attr to rustc_attr_parsing and create rustc_attr_data_structures 2024-12-16 19:08:19 +01:00
rustc_attr_parsing Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_baked_icu_data Delete the cfg(not(parallel)) serial compiler 2024-11-12 13:38:58 +00:00
rustc_borrowck Auto merge of #134499 - jieyouxu:rollup-zmaveur, r=jieyouxu 2024-12-19 11:25:43 +00:00
rustc_builtin_macros Rollup merge of #134161 - nnethercote:overhaul-token-cursors, r=spastorino 2024-12-18 22:56:53 +08:00
rustc_codegen_cranelift Rollup merge of #133702 - RalfJung:single-variant, r=oli-obk 2024-12-19 16:48:07 +08:00
rustc_codegen_gcc chore: fix some typos 2024-12-18 23:23:44 +08:00
rustc_codegen_llvm fix outdated comment 2024-12-18 11:01:54 +01:00
rustc_codegen_ssa Rollup merge of #133702 - RalfJung:single-variant, r=oli-obk 2024-12-19 16:48:07 +08:00
rustc_const_eval Rollup merge of #133702 - RalfJung:single-variant, r=oli-obk 2024-12-19 16:48:07 +08:00
rustc_data_structures Remove jobserver from Session 2024-12-13 10:21:22 +00:00
rustc_driver
rustc_driver_impl Rollup merge of #134420 - Integral-Tech:pathbuf-refactor, r=compiler-errors 2024-12-18 22:56:56 +08:00
rustc_error_codes Auto merge of #132706 - compiler-errors:async-closures, r=oli-obk 2024-12-13 00:37:51 +00:00
rustc_error_messages Delete the cfg(not(parallel)) serial compiler 2024-11-12 13:38:58 +00:00
rustc_errors chore: fix some typos 2024-12-18 23:23:44 +08:00
rustc_expand Rollup merge of #134161 - nnethercote:overhaul-token-cursors, r=spastorino 2024-12-18 22:56:53 +08:00
rustc_feature Stabilize #[diagnostic::do_not_recommend] 2024-12-18 07:10:53 +01:00
rustc_fluent_macro use tracked_path in rustc_fluent_macro 2024-10-19 22:32:38 +08:00
rustc_fs_util
rustc_graphviz
rustc_hir Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_hir_analysis Auto merge of #134499 - jieyouxu:rollup-zmaveur, r=jieyouxu 2024-12-19 11:25:43 +00:00
rustc_hir_pretty Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_hir_typeck Rollup merge of #134474 - oli-obk:push-yomnkntvzlxw, r=compiler-errors 2024-12-19 16:48:10 +08:00
rustc_incremental Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_index Use BitSet in SparseBitMatrix. 2024-12-09 08:53:33 +11:00
rustc_index_macros Auto merge of #130867 - michirakara:steps_between, r=dtolnay 2024-11-22 10:54:22 +00:00
rustc_infer Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_interface Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_lexer Add test to check unicode identifier version 2024-12-09 06:23:59 -08:00
rustc_lint Auto merge of #133961 - lcnr:borrowck-cleanup, r=jackh726 2024-12-19 08:33:20 +00:00
rustc_lint_defs Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_llvm Auto merge of #129181 - beetrees:asm-spans, r=pnkfelix,compiler-errors 2024-12-12 02:34:06 +00:00
rustc_log
rustc_macros Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_metadata Auto merge of #134243 - nnethercote:re-export-more-rustc_span, r=jieyouxu 2024-12-18 02:56:38 +00:00
rustc_middle Auto merge of #134499 - jieyouxu:rollup-zmaveur, r=jieyouxu 2024-12-19 11:25:43 +00:00
rustc_mir_build Auto merge of #134486 - compiler-errors:drop-for-lint, r=nikomatsakis 2024-12-19 15:58:08 +00:00
rustc_mir_dataflow Auto merge of #133328 - nnethercote:simplify-SwitchInt-handling, r=tmiasko 2024-12-18 22:57:23 +00:00
rustc_mir_transform Rollup merge of #133702 - RalfJung:single-variant, r=oli-obk 2024-12-19 16:48:07 +08:00
rustc_monomorphize Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_next_trait_solver update new solver candidate assembly 2024-12-18 16:35:05 +01:00
rustc_parse Auto merge of #134443 - joshtriplett:use-field-init-shorthand, r=lqd,tgross35,nnethercote 2024-12-18 19:16:15 +00:00
rustc_parse_format
rustc_passes Also warn against #[diagnostic::do_not_recommend] on plain impls 2024-12-18 07:10:55 +01:00
rustc_pattern_analysis no more Reveal :( 2024-11-23 13:52:54 +01:00
rustc_privacy Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_query_impl Rename ty_def_id so people will stop using it by accident 2024-12-13 16:36:38 +00:00
rustc_query_system Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_resolve Rollup merge of #134473 - acceptacross:master, r=compiler-errors 2024-12-18 21:38:10 -05:00
rustc_sanitizers Remove more traces of anonymous ADTs 2024-12-10 19:50:47 +00:00
rustc_serialize Fix explicit_iter_loop in rustc_serialize 2024-10-16 15:44:16 +02:00
rustc_session Rollup merge of #134420 - Integral-Tech:pathbuf-refactor, r=compiler-errors 2024-12-18 22:56:56 +08:00
rustc_smir make no-variant types a dedicated Variants variant 2024-12-18 11:01:54 +01:00
rustc_span Improve comments on Keywords. 2024-12-18 20:21:03 +11:00
rustc_symbol_mangling Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_target make no-variant types a dedicated Variants variant 2024-12-18 11:01:54 +01:00
rustc_trait_selection Auto merge of #133961 - lcnr:borrowck-cleanup, r=jackh726 2024-12-19 08:33:20 +00:00
rustc_traits Delay a bug when encountering an impl with unconstrained generics in codegen_select 2024-11-23 05:27:45 +00:00
rustc_transmute add comment explaining why ty_and_layout_field is not used 2024-12-18 11:01:54 +01:00
rustc_ty_utils make no-variant types a dedicated Variants variant 2024-12-18 11:01:54 +01:00
rustc_type_ir Rollup merge of #133643 - lcnr:merge-candidates, r=compiler-errors 2024-12-18 21:38:08 -05:00
rustc_type_ir_macros do not relate Abi and Safety 2024-10-22 23:13:04 +02:00
stable_mir make no-variant types a dedicated Variants variant 2024-12-18 11:01:54 +01:00