os-rust/compiler
bors 3e7514670d Auto merge of #94963 - lcnr:inherent-impls-std, r=oli-obk,m-ou-se
allow arbitrary inherent impls for builtin types in core

Part of https://github.com/rust-lang/compiler-team/issues/487. Slightly adjusted after some talks with `@m-ou-se` about the requirements of `t-libs-api`.

This adds a crate attribute `#![rustc_coherence_is_core]` which allows arbitrary impls for builtin types in core.

For other library crates impls for builtin types should be avoided if possible. We do have to allow the existing stable impls however. To prevent us from accidentally adding more of these in the future, there is a second attribute `#[rustc_allow_incoherent_impl]` which has to be added to **all impl items**. This only supports impls for builtin types but can easily be extended to additional types in a future PR.

This implementation does not check for overlaps in these impls. Perfectly checking that requires us to check the coherence of these incoherent impls in every crate, as two distinct dependencies may add overlapping methods. It should be easy enough to detect if it goes wrong and the attribute is only intended for use inside of std.

The first two commits are mostly unrelated cleanups.
2022-03-30 12:28:50 +00:00
..
rustc Propagate parallel_compiler feature through rustc crates. Turned off feature gives change of builded crates: 238 -> 224. 2022-03-28 08:41:12 +03:00
rustc_apfloat Spellchecking some comments 2022-03-30 01:39:38 -04:00
rustc_arena mark FIXMES for all the places found that are probably offset_from 2022-03-29 20:18:28 -04:00
rustc_ast Remove Nonterminal::NtTT. 2022-03-28 10:03:02 +11:00
rustc_ast_lowering Spellchecking some comments 2022-03-30 01:39:38 -04:00
rustc_ast_passes Rollup merge of #95461 - nyurik:spelling, r=lcnr 2022-03-30 09:10:07 +02:00
rustc_ast_pretty Remove Nonterminal::NtTT. 2022-03-28 10:03:02 +11:00
rustc_attr Rollup merge of #94948 - jhpratt:rustc_deprecated, r=Dylan-DPC 2022-03-20 09:14:59 +01:00
rustc_borrowck Auto merge of #95466 - Dylan-DPC:rollup-g7ddr8y, r=Dylan-DPC 2022-03-30 07:45:42 +00:00
rustc_builtin_macros Spellchecking some comments 2022-03-30 01:39:38 -04:00
rustc_codegen_cranelift Rollup merge of #95461 - nyurik:spelling, r=lcnr 2022-03-30 09:10:07 +02:00
rustc_codegen_gcc Rollup merge of #95461 - nyurik:spelling, r=lcnr 2022-03-30 09:10:07 +02:00
rustc_codegen_llvm Rollup merge of #95461 - nyurik:spelling, r=lcnr 2022-03-30 09:10:07 +02:00
rustc_codegen_ssa Auto merge of #95241 - Gankra:cleaned-provenance, r=workingjubilee 2022-03-30 10:09:10 +00:00
rustc_const_eval Auto merge of #95466 - Dylan-DPC:rollup-g7ddr8y, r=Dylan-DPC 2022-03-30 07:45:42 +00:00
rustc_data_structures Auto merge of #95466 - Dylan-DPC:rollup-g7ddr8y, r=Dylan-DPC 2022-03-30 07:45:42 +00:00
rustc_driver Propagate parallel_compiler feature through rustc crates. Turned off feature gives change of builded crates: 238 -> 224. 2022-03-28 08:41:12 +03:00
rustc_error_codes rework error messages for incorrect inherent impls 2022-03-30 11:23:58 +02:00
rustc_errors Spellchecking some comments 2022-03-30 01:39:38 -04:00
rustc_expand Spellchecking some comments 2022-03-30 01:39:38 -04:00
rustc_feature rework implementation for inherent impls for builtin types 2022-03-30 11:23:58 +02:00
rustc_fs_util Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_graphviz eplace usages of vec![].into_iter with [].into_iter 2022-01-09 14:09:25 +11:00
rustc_hir Auto merge of #94963 - lcnr:inherent-impls-std, r=oli-obk,m-ou-se 2022-03-30 12:28:50 +00:00
rustc_hir_pretty resolve: Fix incorrect results of opt_def_kind query for some built-in macros 2022-02-24 22:54:36 +03:00
rustc_incremental Spellchecking some comments 2022-03-30 01:39:38 -04:00
rustc_index Fix small typo in FIXME 2022-03-15 12:04:23 +01:00
rustc_infer Auto merge of #94081 - oli-obk:lazy_tait_take_two, r=nikomatsakis 2022-03-30 05:04:45 +00:00
rustc_interface Propagate parallel_compiler feature through rustc crates. Turned off feature gives change of builded crates: 238 -> 224. 2022-03-28 08:41:12 +03:00
rustc_lexer Add test for >65535 hashes in lexing raw string 2022-03-16 06:37:41 +01:00
rustc_lint Remove opaque type obligation and just register opaque types as they are encountered. 2022-03-28 16:57:45 +00:00
rustc_lint_defs resolve the conflict in compiler/rustc_session/src/parse.rs 2022-03-16 20:12:30 +08:00
rustc_llvm RustWrapper: add missing include 2022-03-10 11:16:33 -05:00
rustc_log Make rustc_log doc test runnable 2022-01-03 22:31:56 -08:00
rustc_macros add #[rustc_pass_by_value] to more types 2022-03-08 15:39:52 +01:00
rustc_metadata typo 2022-03-30 11:24:26 +02:00
rustc_middle Auto merge of #94963 - lcnr:inherent-impls-std, r=oli-obk,m-ou-se 2022-03-30 12:28:50 +00:00
rustc_mir_build Auto merge of #95466 - Dylan-DPC:rollup-g7ddr8y, r=Dylan-DPC 2022-03-30 07:45:42 +00:00
rustc_mir_dataflow Nit 2022-03-27 10:58:55 -07:00
rustc_mir_transform Auto merge of #95149 - cjgillot:once-diag, r=estebank 2022-03-26 00:54:54 +00:00
rustc_monomorphize Make fatal DiagnosticBuilder yield never 2022-03-27 22:25:32 -07:00
rustc_parse Rollup merge of #95461 - nyurik:spelling, r=lcnr 2022-03-30 09:10:07 +02:00
rustc_parse_format Correctly mark the span of captured arguments in format_args!() 2022-02-16 07:34:06 +00:00
rustc_passes rework implementation for inherent impls for builtin types 2022-03-30 11:23:58 +02:00
rustc_plugin_impl replace dynamic library module with libloading 2021-12-06 12:03:47 -05:00
rustc_privacy rustc_error: make ErrorReported impossible to construct 2022-03-16 10:35:24 -05:00
rustc_query_impl rework implementation for inherent impls for builtin types 2022-03-30 11:23:58 +02:00
rustc_query_system Auto merge of #94081 - oli-obk:lazy_tait_take_two, r=nikomatsakis 2022-03-30 05:04:45 +00:00
rustc_resolve resolve: Simplify some diagnostic code to avoid an ICE 2022-03-27 02:43:29 +03:00
rustc_save_analysis Improve AdtDef interning. 2022-03-11 13:31:24 +11:00
rustc_serialize Delete Decoder::read_unit 2022-02-22 18:14:51 -05:00
rustc_session Make fatal DiagnosticBuilder yield never 2022-03-27 22:25:32 -07:00
rustc_span remove now unnecessary lang items 2022-03-30 11:23:58 +02:00
rustc_symbol_mangling resolve the conflict in compiler/rustc_session/src/parse.rs 2022-03-16 20:12:30 +08:00
rustc_target Rollup merge of #95341 - Meziu:armv6k-3ds-target, r=nagisa 2022-03-27 05:36:11 +02:00
rustc_trait_selection Auto merge of #95466 - Dylan-DPC:rollup-g7ddr8y, r=Dylan-DPC 2022-03-30 07:45:42 +00:00
rustc_traits Remove opaque type obligation and just register opaque types as they are encountered. 2022-03-28 16:57:45 +00:00
rustc_ty_utils Rename ~const Drop to ~const Destruct 2022-03-21 17:04:03 +11:00
rustc_type_ir Revert "Auto merge of #93893 - oli-obk:sad_revert, r=oli-obk" 2022-03-28 16:27:14 +00:00
rustc_typeck rework error messages for incorrect inherent impls 2022-03-30 11:23:58 +02:00