granite-rust/compiler
Matthias Krüger 8e5f722ece
Rollup merge of #120972 - lukas-code:autoderef-type-error, r=compiler-errors
fix ICE for deref coercions with type errors

Follow-up to https://github.com/rust-lang/rust/pull/120895, where I made types with errors go through the full coercion code, which is necessary if we want to build MIR for bodies with errors (https://github.com/rust-lang/rust/pull/120550).

The code for coercing `&T` to `&U` currently assumes that autoderef for `&T` will succeed for at least two steps (`&T` and `T`):

b17491c8f6/compiler/rustc_hir_typeck/src/coercion.rs (L339-L464)

But for types with errors, we previously only returned the no-op autoderef step (`&{type error}` -> `&{type error}`) and then stopped early. This PR changes autoderef for types with errors to still go through the built-in derefs (e.g. `&&{type error}` -> `&{type error}` -> `{type error}`) and only stop early when it would have to go looking for `Deref` trait impls.

fixes https://github.com/rust-lang/rust/issues/120945

r? ``@compiler-errors`` or compiler
2024-02-12 18:04:11 +01:00
..
rustc Clean up rustc_*/Cargo.toml. 2023-10-30 08:46:02 +11:00
rustc_abi Fix rustc_abi build on stable 2024-01-16 21:15:31 +01:00
rustc_arena Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_ast Remove unnecessary min_specialization after bootstrap 2024-02-10 18:15:11 +11:00
rustc_ast_lowering Remove unused fn 2024-02-10 03:52:13 +00:00
rustc_ast_passes Rollup merge of #120693 - nnethercote:invert-diagnostic-lints, r=davidtwco 2024-02-09 14:41:50 +01:00
rustc_ast_pretty Rollup merge of #120693 - nnethercote:invert-diagnostic-lints, r=davidtwco 2024-02-09 14:41:50 +01:00
rustc_attr Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_baked_icu_data Bump cfg(bootstrap)s 2023-11-15 19:41:28 -05:00
rustc_borrowck Rollup merge of #120917 - chenyukang:yukang-dead-parameters, r=compiler-errors 2024-02-12 18:04:08 +01:00
rustc_builtin_macros Rollup merge of #120693 - nnethercote:invert-diagnostic-lints, r=davidtwco 2024-02-09 14:41:50 +01:00
rustc_codegen_cranelift Auto merge of #120843 - matthiaskrgr:rollup-med37z5, r=matthiaskrgr 2024-02-09 15:34:48 +00:00
rustc_codegen_gcc Rollup merge of #120693 - nnethercote:invert-diagnostic-lints, r=davidtwco 2024-02-09 14:41:50 +01:00
rustc_codegen_llvm Remove unnecessary #![feature(min_specialization)] 2024-02-10 12:26:14 +11:00
rustc_codegen_ssa Rollup merge of #120865 - saethlin:missing-o-files, r=nnethercote 2024-02-10 13:12:31 +01:00
rustc_const_eval Rollup merge of #120933 - RalfJung:const-check-misc, r=oli-obk 2024-02-12 18:04:09 +01:00
rustc_data_structures Rollup merge of #120846 - petrochenkov:jobs, r=oli-obk 2024-02-10 00:58:38 +01:00
rustc_driver Bump cfg(bootstrap)s 2023-11-15 19:41:28 -05:00
rustc_driver_impl Rollup merge of #120693 - nnethercote:invert-diagnostic-lints, r=davidtwco 2024-02-09 14:41:50 +01:00
rustc_error_codes unstably allow constants to refer to statics and read from immutable statics 2024-02-10 16:12:55 +01:00
rustc_error_messages Rollup merge of #120693 - nnethercote:invert-diagnostic-lints, r=davidtwco 2024-02-09 14:41:50 +01:00
rustc_errors Rollup merge of #120833 - nnethercote:more-internal-emit_diagnostics-cleanups, r=oli-obk 2024-02-12 18:04:07 +01:00
rustc_expand Rollup merge of #120693 - nnethercote:invert-diagnostic-lints, r=davidtwco 2024-02-09 14:41:50 +01:00
rustc_feature Tweak delayed bug mentions. 2024-02-12 18:39:20 +11:00
rustc_fluent_macro Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_fs_util Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_graphviz Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_hir Rollup merge of #120872 - petrochenkov:opthirpar, r=cjgillot 2024-02-11 23:19:08 +01:00
rustc_hir_analysis Rollup merge of #120972 - lukas-code:autoderef-type-error, r=compiler-errors 2024-02-12 18:04:11 +01:00
rustc_hir_pretty Rollup merge of #120693 - nnethercote:invert-diagnostic-lints, r=davidtwco 2024-02-09 14:41:50 +01:00
rustc_hir_typeck Rollup merge of #120917 - chenyukang:yukang-dead-parameters, r=compiler-errors 2024-02-12 18:04:08 +01:00
rustc_incremental Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_index Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_index_macros Step all bootstrap cfgs forward 2024-02-08 07:44:34 -05:00
rustc_infer Tweak delayed bug mentions. 2024-02-12 18:39:20 +11:00
rustc_interface Tweak delayed bug mentions. 2024-02-12 18:39:20 +11:00
rustc_lexer Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_lint Rollup merge of #120872 - petrochenkov:opthirpar, r=cjgillot 2024-02-11 23:19:08 +01:00
rustc_lint_defs Remove unnecessary #![feature(min_specialization)] 2024-02-10 12:26:14 +11:00
rustc_llvm Rollup merge of #120693 - nnethercote:invert-diagnostic-lints, r=davidtwco 2024-02-09 14:41:50 +01:00
rustc_log Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_macros Rollup merge of #120693 - nnethercote:invert-diagnostic-lints, r=davidtwco 2024-02-09 14:41:50 +01:00
rustc_metadata Encode coroutine_for_closure for foreign crates 2024-02-10 22:58:26 +00:00
rustc_middle Tweak delayed bug mentions. 2024-02-12 18:39:20 +11:00
rustc_mir_build Rollup merge of #120872 - petrochenkov:opthirpar, r=cjgillot 2024-02-11 23:19:08 +01:00
rustc_mir_dataflow Remove unnecessary min_specialization after bootstrap 2024-02-10 18:15:11 +11:00
rustc_mir_transform Rollup merge of #120944 - compiler-errors:inliner-abi, r=oli-obk 2024-02-12 18:04:10 +01:00
rustc_monomorphize Rollup merge of #120773 - Enselic:copy-vs-move, r=oli-obk 2024-02-11 01:37:55 +01:00
rustc_next_trait_solver Add CoroutineClosure to TyKind, AggregateKind, UpvarArgs 2024-02-06 02:22:58 +00:00
rustc_parse Rollup merge of #120693 - nnethercote:invert-diagnostic-lints, r=davidtwco 2024-02-09 14:41:50 +01:00
rustc_parse_format Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_passes Rollup merge of #120917 - chenyukang:yukang-dead-parameters, r=compiler-errors 2024-02-12 18:04:08 +01:00
rustc_pattern_analysis Rollup merge of #120693 - nnethercote:invert-diagnostic-lints, r=davidtwco 2024-02-09 14:41:50 +01:00
rustc_privacy Rollup merge of #120693 - nnethercote:invert-diagnostic-lints, r=davidtwco 2024-02-09 14:41:50 +01:00
rustc_query_impl Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_query_system Rollup merge of #120693 - nnethercote:invert-diagnostic-lints, r=davidtwco 2024-02-09 14:41:50 +01:00
rustc_resolve Rollup merge of #120693 - nnethercote:invert-diagnostic-lints, r=davidtwco 2024-02-09 14:41:50 +01:00
rustc_serialize Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_session Rollup merge of #120693 - nnethercote:invert-diagnostic-lints, r=davidtwco 2024-02-09 14:41:50 +01:00
rustc_smir Add a new debug_assertions instrinsic (compiler) 2024-02-08 11:49:08 -05:00
rustc_span Tweak delayed bug mentions. 2024-02-12 18:39:20 +11:00
rustc_symbol_mangling remove a bunch of dead parameters in fn 2024-02-12 09:51:35 +08:00
rustc_target Remove unnecessary min_specialization after bootstrap 2024-02-10 18:15:11 +11:00
rustc_trait_selection Rollup merge of #120917 - chenyukang:yukang-dead-parameters, r=compiler-errors 2024-02-12 18:04:08 +01:00
rustc_traits Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_transmute Invert diagnostic lints. 2024-02-06 13:12:33 +11:00
rustc_ty_utils Auto merge of #120619 - compiler-errors:param, r=lcnr 2024-02-11 22:13:52 +00:00
rustc_type_ir Rollup merge of #120693 - nnethercote:invert-diagnostic-lints, r=davidtwco 2024-02-09 14:41:50 +01:00
stable_mir Add a new debug_assertions instrinsic (compiler) 2024-02-08 11:49:08 -05:00