rust/compiler
Matthias Krüger fbed195b4d
Rollup merge of #133226 - compiler-errors:opt-in-pointer-like, r=lcnr
Make `PointerLike` opt-in instead of built-in

The `PointerLike` trait currently is a built-in trait that computes the layout of the type. This is a bit problematic, because types implement this trait automatically. Since this can be broken due to semver-compatible changes to a type's layout, this is undesirable. Also, calling `layout_of` in the trait system also causes cycles.

This PR makes the trait implemented via regular impls, and adds additional validation on top to make sure that those impls are valid. This could eventually be `derive()`d for custom smart pointers, and we can trust *that* as a semver promise rather than risking library authors accidentally breaking it.

On the other hand, we may never expose `PointerLike`, but at least now the implementation doesn't invoke `layout_of` which could cause ICEs or cause cycles.

Right now for a `PointerLike` impl to be valid, it must be an ADT that is `repr(transparent)` and the non-1zst field needs to implement `PointerLike`. There are also some primitive impls for `&T`/ `&mut T`/`*const T`/`*mut T`/`Box<T>`.
2024-11-20 20:10:13 +01:00
..
rustc Auto merge of #132282 - Noratrieb:it-is-the-end-of-serial, r=cjgillot 2024-11-12 15:14:56 +00:00
rustc_abi pointee_info_at: fix logic for recursing into enums 2024-11-08 07:35:29 +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 Add MutVisitor::visit_fn_ret_ty 2024-11-18 15:49:09 -03:00
rustc_ast_ir Add sugar for &pin (const|mut) types 2024-10-07 11:15:04 -07:00
rustc_ast_lowering Introduce min_generic_const_args and directly represent paths 2024-11-19 05:07:43 +00:00
rustc_ast_passes Rollup merge of #133023 - samestep:hir-stats-total-count, r=nnethercote 2024-11-19 09:19:20 +01:00
rustc_ast_pretty fix clippy::clone_on_ref_ptr for compiler 2024-10-28 18:05:08 +03:00
rustc_attr ensure that all publicly reachable const fn have const stability info 2024-11-10 10:16:26 +01:00
rustc_baked_icu_data Delete the cfg(not(parallel)) serial compiler 2024-11-12 13:38:58 +00:00
rustc_borrowck move fn is_item_raw to TypingEnv 2024-11-19 18:06:20 +01:00
rustc_builtin_macros Rollup merge of #132787 - maxcabrajac:fnctxt, r=petrochenkov 2024-11-16 21:05:46 +01:00
rustc_codegen_cranelift Auto merge of #133212 - lcnr:questionable-uwu, r=compiler-errors 2024-11-20 06:22:01 +00:00
rustc_codegen_gcc When the required discriminator value exceeds LLVM's limits, drop the debug info for the function instead of panicking. 2024-11-19 05:19:09 -08:00
rustc_codegen_llvm When the required discriminator value exceeds LLVM's limits, drop the debug info for the function instead of panicking. 2024-11-19 05:19:09 -08:00
rustc_codegen_ssa Auto merge of #133212 - lcnr:questionable-uwu, r=compiler-errors 2024-11-20 06:22:01 +00:00
rustc_const_eval interpret: make typing_env field private 2024-11-20 11:05:53 +01:00
rustc_data_structures Auto merge of #124780 - Mark-Simulacrum:lockless-cache, r=lcnr 2024-11-19 02:07:48 +00:00
rustc_driver
rustc_driver_impl Make rustc --explain busybox less compatible 2024-11-18 20:37:32 +00:00
rustc_error_codes remove support for rustc_safe_intrinsic attribute; use rustc_intrinsic functions instead 2024-11-08 09:16:00 +01:00
rustc_error_messages Delete the cfg(not(parallel)) serial compiler 2024-11-12 13:38:58 +00:00
rustc_errors Auto merge of #132954 - matthiaskrgr:rollup-x3rww9h, r=matthiaskrgr 2024-11-12 18:04:27 +00:00
rustc_expand Rollup merge of #132787 - maxcabrajac:fnctxt, r=petrochenkov 2024-11-16 21:05:46 +01:00
rustc_feature Rollup merge of #132732 - gavincrawford:as_ptr_attribute, r=Urgau 2024-11-20 01:54:24 -05:00
rustc_fluent_macro use tracked_path in rustc_fluent_macro 2024-10-19 22:32:38 +08:00
rustc_fs_util Couple of changes to make it easier to compile rustc for wasm 2024-09-26 19:51:14 +00:00
rustc_graphviz Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
rustc_hir Rollup merge of #132144 - adetaylor:receiver-trait-itself, r=wesleywiser 2024-11-11 21:58:29 +01:00
rustc_hir_analysis Make PointerLike opt-in as a trait 2024-11-20 16:36:12 +00:00
rustc_hir_pretty compiler: Switch to rustc_abi in hir_pretty, lint_defs, and mir_build 2024-10-30 22:38:49 -07:00
rustc_hir_typeck Auto merge of #133212 - lcnr:questionable-uwu, r=compiler-errors 2024-11-20 06:22:01 +00:00
rustc_incremental replace manual time convertions with std ones 2024-11-03 15:51:39 +03:00
rustc_index Rollup merge of #130625 - heiseish:issue-124028-fix, r=jieyouxu 2024-10-10 12:49:18 +02:00
rustc_index_macros Remove 'apostrophes' from rustc_parse_format 2024-10-14 23:22:51 +02:00
rustc_infer review 2024-11-18 10:50:14 +01:00
rustc_interface Rollup merge of #133023 - samestep:hir-stats-total-count, r=nnethercote 2024-11-19 09:19:20 +01:00
rustc_lexer Remove TokenKind::InvalidPrefix. 2024-11-19 18:06:22 +11:00
rustc_lint Auto merge of #133234 - jhpratt:rollup-42dmg4p, r=jhpratt 2024-11-20 09:27:56 +00:00
rustc_lint_defs Rollup merge of #133108 - RalfJung:future-compat-needs-to-run, r=lcnr 2024-11-20 01:54:25 -05:00
rustc_llvm PassWrapper: disable UseOdrIndicator for Asan Win32 2024-11-14 04:20:18 +08:00
rustc_log Reformat using the new identifier sorting from rustfmt 2024-09-22 19:11:29 -04:00
rustc_macros give a better error for tuple structs in derive(Diagnostic) 2024-10-27 21:23:28 -04:00
rustc_metadata use TypingEnv when no infcx is available 2024-11-18 10:38:56 +01:00
rustc_middle Rollup merge of #133226 - compiler-errors:opt-in-pointer-like, r=lcnr 2024-11-20 20:10:13 +01:00
rustc_mir_build Rollup merge of #132708 - estebank:const-as-binding, r=Nadrieril 2024-11-20 20:10:12 +01:00
rustc_mir_dataflow use TypingEnv when no infcx is available 2024-11-18 10:38:56 +01:00
rustc_mir_transform interpret: make typing_env field private 2024-11-20 11:05:53 +01:00
rustc_monomorphize move fn is_item_raw to TypingEnv 2024-11-19 18:06:20 +01:00
rustc_next_trait_solver Rip out built-in PointerLike impl 2024-11-20 16:13:57 +00:00
rustc_parse Auto merge of #133219 - matthiaskrgr:rollup-hnuq0zf, r=matthiaskrgr 2024-11-19 23:04:44 +00:00
rustc_parse_format Remove 'apostrophes' from rustc_parse_format 2024-10-14 23:22:51 +02:00
rustc_passes Auto merge of #133234 - jhpratt:rollup-42dmg4p, r=jhpratt 2024-11-20 09:27:56 +00:00
rustc_pattern_analysis Rollup merge of #132708 - estebank:const-as-binding, r=Nadrieril 2024-11-20 20:10:12 +01:00
rustc_privacy Simplify some places that deal with generic parameter defaults 2024-11-11 21:29:18 +01:00
rustc_query_impl Delete the cfg(not(parallel)) serial compiler 2024-11-12 13:38:58 +00:00
rustc_query_system Auto merge of #124780 - Mark-Simulacrum:lockless-cache, r=lcnr 2024-11-19 02:07:48 +00:00
rustc_resolve Auto merge of #132761 - nnethercote:resolve-tweaks, r=petrochenkov 2024-11-19 19:54:35 +00:00
rustc_sanitizers use TypingEnv when no infcx is available 2024-11-18 10:38:56 +01:00
rustc_serialize Fix explicit_iter_loop in rustc_serialize 2024-10-16 15:44:16 +02:00
rustc_session Rollup merge of #133023 - samestep:hir-stats-total-count, r=nnethercote 2024-11-19 09:19:20 +01:00
rustc_smir InterpCx store TypingEnv instead of a ParamEnv 2024-11-19 21:36:23 +01:00
rustc_span Rollup merge of #132732 - gavincrawford:as_ptr_attribute, r=Urgau 2024-11-20 01:54:24 -05:00
rustc_symbol_mangling additional TypingEnv cleanups 2024-11-19 21:36:23 +01:00
rustc_target Fix LLVM target triple for x86_64-win7-windows-msvc 2024-11-20 10:47:28 +01:00
rustc_trait_selection Rip out built-in PointerLike impl 2024-11-20 16:13:57 +00:00
rustc_traits use TypingEnv when no infcx is available 2024-11-18 10:38:56 +01:00
rustc_transmute use TypingEnv when no infcx is available 2024-11-18 10:38:56 +01:00
rustc_ty_utils resolve_instance: stop relying on Reveal 2024-11-19 21:36:23 +01:00
rustc_type_ir Rip out built-in PointerLike impl 2024-11-20 16:13:57 +00:00
rustc_type_ir_macros do not relate Abi and Safety 2024-10-22 23:13:04 +02:00
stable_mir Rollup merge of #132161 - celinval:smir-fix-indent, r=compiler-errors 2024-11-08 18:51:28 +11:00