rust/compiler
Matthias Krüger f1e180451b
Rollup merge of #116496 - estebank:question-method-chain-context, r=compiler-errors
Provide context when `?` can't be called because of `Result<_, E>`

When a method chain ending in `?` causes an E0277 because the expression's `Result::Err` variant doesn't have a type that can be converted to the `Result<_, E>` type parameter in the return type, provide additional context of which parts of the chain can and can't support the `?` operator.

```
error[E0277]: `?` couldn't convert the error to `String`
  --> $DIR/question-mark-result-err-mismatch.rs:27:25
   |
LL | fn bar() -> Result<(), String> {
   |             ------------------ expected `String` because of this
LL |     let x = foo();
   |             ----- this has type `Result<_, String>`
...
LL |         .map_err(|_| ())?;
   |          ---------------^ the trait `From<()>` is not implemented for `String`
   |          |
   |          this can't be annotated with `?` because it has type `Result<_, ()>`
   |
   = note: the question mark operation (`?`) implicitly performs a conversion on the error value using the `From` trait
   = help: the following other types implement trait `From<T>`:
             <String as From<char>>
             <String as From<Box<str>>>
             <String as From<Cow<'a, str>>>
             <String as From<&str>>
             <String as From<&mut str>>
             <String as From<&String>>
   = note: required for `Result<(), String>` to implement `FromResidual<Result<Infallible, ()>>`
```

Fix #72124.
2023-12-06 17:21:56 +01:00
..
rustc Clean up rustc_*/Cargo.toml. 2023-10-30 08:46:02 +11:00
rustc_abi Rename LayoutCalculator::delay_bug as LayoutCalculator::delayed_bug. 2023-12-02 09:01:34 +11:00
rustc_arena Document reentrancy in *Arena::alloc_from_iter 2023-12-04 02:24:10 +01:00
rustc_ast Address code review feedback 2023-12-04 14:33:46 -08:00
rustc_ast_lowering Address code review feedback 2023-12-04 14:33:46 -08:00
rustc_ast_passes Address code review feedback 2023-12-04 14:33:46 -08:00
rustc_ast_pretty Option<CoroutineKind> 2023-12-04 13:03:37 -08:00
rustc_attr Use Session::diagnostic in more places. 2023-12-02 09:01:35 +11:00
rustc_baked_icu_data Bump cfg(bootstrap)s 2023-11-15 19:41:28 -05:00
rustc_borrowck Provide more suggestions for cloning immutable bindings 2023-12-04 21:54:34 +00:00
rustc_builtin_macros Auto merge of #118655 - compiler-errors:rollup-vrngyzn, r=compiler-errors 2023-12-06 04:20:51 +00:00
rustc_codegen_cranelift Give Handler::fatal and Session::fatal the same return type. 2023-12-04 15:42:06 +11:00
rustc_codegen_gcc Rename some arguments. 2023-12-04 18:57:41 +11:00
rustc_codegen_llvm Rollup merge of #118587 - nnethercote:cleanup-error-handlers-2, r=compiler-errors 2023-12-05 14:52:44 -05:00
rustc_codegen_ssa Rollup merge of #118573 - petrochenkov:pathdatakind, r=TaKO8Ki 2023-12-04 21:19:45 +09:00
rustc_const_eval Rollup merge of #118565 - RalfJung:numeric_intrinsic, r=davidtwco 2023-12-04 20:46:09 +01:00
rustc_data_structures jobserver: check file descriptors 2023-11-29 18:00:03 +03:00
rustc_driver Bump cfg(bootstrap)s 2023-11-15 19:41:28 -05:00
rustc_driver_impl rustc_driver_impl: Address all rustc::potential_query_instability lints 2023-12-05 06:19:14 +01:00
rustc_error_codes Yeet E0744 2023-11-28 20:40:38 +00:00
rustc_error_messages Remove rustc_error_messages/messages.ftl. 2023-11-26 08:37:27 +11:00
rustc_errors Inline and remove fatal_no_raise. 2023-12-04 18:57:42 +11:00
rustc_expand Auto merge of #118655 - compiler-errors:rollup-vrngyzn, r=compiler-errors 2023-12-06 04:20:51 +00:00
rustc_feature Rollup merge of #118123 - RalfJung:internal-lib-features, r=compiler-errors 2023-12-05 14:52:41 -05:00
rustc_fluent_macro Add a useful comment. 2023-11-26 08:38:02 +11:00
rustc_fs_util Clean up rustc_*/Cargo.toml. 2023-10-30 08:46:02 +11:00
rustc_graphviz remove unused pub fn 2023-11-23 14:11:02 +03:00
rustc_hir Lower return types for gen fn to impl Iterator 2023-12-04 11:23:05 -08:00
rustc_hir_analysis Auto merge of #117661 - TheLazyDutchman:point_out_shadowed_associated_types, r=petrochenkov 2023-12-06 10:59:24 +00:00
rustc_hir_pretty Add never_patterns feature gate 2023-11-29 03:58:29 +01:00
rustc_hir_typeck Auto merge of #118655 - compiler-errors:rollup-vrngyzn, r=compiler-errors 2023-12-06 04:20:51 +00:00
rustc_incremental Rename HandlerInner::delayed_span_bugs as HandlerInner::span_delayed_bugs. 2023-12-02 09:01:34 +11:00
rustc_index Replace no_ord_impl with orderable. 2023-11-22 18:38:17 +11:00
rustc_index_macros Put backticks around some attributes in doc comments. 2023-11-27 09:37:01 +11:00
rustc_infer Add print_trait_sugared 2023-12-05 17:15:46 +00:00
rustc_interface rustc_interface: Address all rustc::potential_query_instability lints 2023-12-05 06:33:38 +01:00
rustc_lexer Clean up rustc_*/Cargo.toml. 2023-10-30 08:46:02 +11:00
rustc_lint Option<CoroutineKind> 2023-12-04 13:03:37 -08:00
rustc_lint_defs vis note for no pub reexports glob import 2023-12-01 12:10:07 +08:00
rustc_llvm Auto merge of #113923 - DianQK:restore-no-builtins-lto, r=pnkfelix 2023-12-01 21:45:18 +00:00
rustc_log rustc_log: provide a way to init logging based on the values, not names, of the env vars 2023-11-11 15:24:33 +01:00
rustc_macros Unify HashStable implementations 2023-11-21 05:49:45 +00:00
rustc_metadata Auto merge of #118488 - andjo403:remove_deadlock, r=SparrowLii 2023-12-05 14:02:15 +00:00
rustc_middle Add print_trait_sugared 2023-12-05 17:15:46 +00:00
rustc_mir_build Rollup merge of #118598 - Nadrieril:remove_precise_pointer_size_matching, r=davidtwco 2023-12-05 16:08:35 +01:00
rustc_mir_dataflow Deparameterize Results and ResultsCursor. 2023-11-27 10:35:43 +11:00
rustc_mir_transform Auto merge of #118595 - Zalathar:visible-macro, r=TaKO8Ki 2023-12-06 14:01:21 +00:00
rustc_monomorphize merge DefKind::Coroutine into DefKind::Closure 2023-11-26 21:05:08 +08:00
rustc_parse Auto merge of #118655 - compiler-errors:rollup-vrngyzn, r=compiler-errors 2023-12-06 04:20:51 +00:00
rustc_parse_format Auto merge of #117819 - fmease:rustc_parse_format-stable-rustc, r=Nilstrieb 2023-11-15 14:55:35 +00:00
rustc_passes Rename HandlerInner::delay_span_bug as HandlerInner::span_delayed_bug. 2023-12-02 09:01:19 +11:00
rustc_privacy Auto merge of #118470 - nnethercote:cleanup-error-handlers, r=compiler-errors 2023-12-02 02:48:34 +00:00
rustc_query_impl QueryContext: rename try_collect_active_jobs -> collect_active_jobs and change it's return type from Option<QueryMap> to QueryMap 2023-11-27 18:13:15 +03:00
rustc_query_system Rollup merge of #118123 - RalfJung:internal-lib-features, r=compiler-errors 2023-12-05 14:52:41 -05:00
rustc_resolve Auto merge of #118457 - eholk:genfn, r=compiler-errors 2023-12-05 18:37:15 +00:00
rustc_serialize Call FileEncoder::finish in rmeta encoding 2023-11-22 22:49:22 -05:00
rustc_session Rollup merge of #118587 - nnethercote:cleanup-error-handlers-2, r=compiler-errors 2023-12-05 14:52:44 -05:00
rustc_smir Add more information to stable Instance 2023-12-01 16:22:06 -08:00
rustc_span Detect incorrect ; in Option::ok_or_else and Result::map_err 2023-12-05 22:24:29 +00:00
rustc_symbol_mangling rustc_symbol_mangling: Address all rustc::potential_query_instability lints 2023-12-05 06:41:23 +01:00
rustc_target Auto merge of #117072 - betrusted-io:unwinding-crate-support, r=cuviper 2023-12-06 02:23:01 +00:00
rustc_trait_selection Rollup merge of #116496 - estebank:question-method-chain-context, r=compiler-errors 2023-12-06 17:21:56 +01:00
rustc_traits Auto merge of #118120 - compiler-errors:closure-kind, r=lcnr 2023-11-22 21:09:01 +00:00
rustc_transmute Update itertools to 0.11. 2023-11-22 08:13:21 +11:00
rustc_ty_utils Rollup merge of #118573 - petrochenkov:pathdatakind, r=TaKO8Ki 2023-12-04 21:19:45 +09:00
rustc_type_ir Auto merge of #118120 - compiler-errors:closure-kind, r=lcnr 2023-11-22 21:09:01 +00:00
stable_mir Add more information to stable Instance 2023-12-01 16:22:06 -08:00