rust/compiler/rustc_trait_selection/src
许杰友 Jieyou Xu (Joe) 765e8c75b0
Rollup merge of #131864 - lrh2000:upcast_reorder, r=WaffleLapkin
Never emit `vptr` for empty/auto traits

Emiting `vptr`s for empty/auto traits is unnecessary (#114942) and causes unsoundness in `trait_upcasting` (#131813). This PR should ensure that we never emit vtables for such traits. See the linked issues for more details.

I'm not sure if I can add tests for the vtable layout. So this PR only adds tests for the soundness hole (i.e., the segmentation fault will disappear after this PR).

Fixes #114942
Fixes #131813

Cc #65991 (tracking issue for `trait_upcasting`)

r? `@WaffleLapkin`  (per https://github.com/rust-lang/rust/issues/131813#issuecomment-2419969745)
2024-10-18 14:52:25 +01:00
..
error_reporting Rollup merge of #131753 - compiler-errors:swap-secondary, r=jieyouxu 2024-10-16 20:15:55 +02:00
errors Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
solve Rollup merge of #131825 - lcnr:probe-no-more-leak-2, r=compiler-errors 2024-10-17 20:47:31 +02:00
traits Rollup merge of #131864 - lrh2000:upcast_reorder, r=WaffleLapkin 2024-10-18 14:52:25 +01:00
errors.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
infer.rs move defining_opaque_types out of Canonical 2024-10-17 10:22:52 +02:00
lib.rs Stabilize the map/value methods on ControlFlow 2024-09-25 19:00:17 -07:00
regions.rs Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
solve.rs impossible obligations check fast path 2024-10-10 06:09:50 -04:00