1
Fork 0
rust/compiler/rustc_trait_selection/src
Matthias Krüger 5da750001d
Rollup merge of #136520 - compiler-errors:redundant-layout-assert, r=lcnr
Remove unnecessary layout assertions for object-safe receivers

The soundness of `DispatchFromDyn` relies on the fact that, like all other built-in marker-like layout traits (e.g. `Sized`, `CoerceUnsized`), the guarantees that they enforce in *generic* code via traits will result in assumptions that we can rely on in codegen.

Specifically, `DispatchFromDyn` ensures that we end up with a receiver that is a valid pointer type, and its implementation validity recursively ensures that the ABI of that pointer type upholds the `Scalar` or `ScalarPair` representation for sized and unsized pointees, respectively.

The check that this layout guarantee holds for arbitrary, possibly generic receiver types that also may exist in possibly impossible-to-instantiate where clauses is overkill IMO, and leads to several ICEs due to the fact that computing layouts before monomorphization is going to be fallible at best.

This PR removes the check altogether, since it just exists as a sanity check from very long ago, 6f2a161b1b.

Fixes #125810
Fixes #90110

This PR is an alternative to #136195. cc `@adetaylor.` I didn't realize in that PR that the layout checks that were being modified were simply *sanity checks*, rather than being actually necessary for soundness.
2025-02-04 18:49:41 +01:00
..
error_reporting Make error message less awkward 2025-02-03 19:00:22 +00:00
errors introduce LateParamRegionKind 2024-12-18 16:05:44 +01:00
solve Manually walk into WF obligations in BestObligation proof tree visitor 2025-01-31 18:21:58 +00:00
traits Remove unnecessary layout assertions for object-safe receivers 2025-02-04 01:50:31 +00:00
errors.rs Tweak fn pointer suggestion span 2025-02-02 00:46:02 +00:00
infer.rs Suggest Semicolon in Incorrect Repeat Expressions 2024-12-21 02:30:50 +00:00
lib.rs consistently handle global where-bounds 2024-12-17 08:50:47 +01:00
regions.rs Move param env bound deep normalization to OutlivesEnvironment building 2025-01-28 19:11:05 +00:00
solve.rs impossible obligations check fast path 2024-10-10 06:09:50 -04:00