rust/compiler
bors e36621057d Auto merge of #88719 - estebank:point-at-arg-for-obligation, r=nagisa
Point at argument instead of call for their obligations

When an obligation is introduced by a specific `fn` argument, point at
the argument instead of the `fn` call if the obligation fails to be
fulfilled.

Move the information about pointing at the call argument expression in
an unmet obligation span from the `FulfillmentError` to a new
`ObligationCauseCode`.

When giving an error about an obligation introduced by a function call
that an argument doesn't fulfill, and that argument is a block, add a
span_label pointing at the innermost tail expression.

Current output:

```
error[E0425]: cannot find value `x` in this scope
 --> f10.rs:4:14
  |
4 |         Some(x * 2)
  |              ^ not found in this scope

error[E0277]: expected a `FnOnce<({integer},)>` closure, found `Option<_>`
 --> f10.rs:2:31
  |
2 |       let p = Some(45).and_then({
  |  ______________________--------_^
  | |                      |
  | |                      required by a bound introduced by this call
3 | |         |x| println!("doubling {}", x);
4 | |         Some(x * 2)
  | |         -----------
5 | |     });
  | |_____^ expected an `FnOnce<({integer},)>` closure, found `Option<_>`
  |
  = help: the trait `FnOnce<({integer},)>` is not implemented for `Option<_>`
```

Previous output:

```
error[E0425]: cannot find value `x` in this scope
 --> f10.rs:4:14
  |
4 |         Some(x * 2)
  |              ^ not found in this scope

error[E0277]: expected a `FnOnce<({integer},)>` closure, found `Option<_>`
 --> f10.rs:2:22
  |
2 |     let p = Some(45).and_then({
  |                      ^^^^^^^^ expected an `FnOnce<({integer},)>` closure, found `Option<_>`
  |
  = help: the trait `FnOnce<({integer},)>` is not implemented for `Option<_>`
```

Partially address #27300. Will require rebasing on top of #88546.
2021-09-16 22:17:33 +00:00
..
rustc rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_apfloat rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_arena Remove unused arena macro args 2021-08-30 13:09:38 +02:00
rustc_ast Rollup merge of #88775 - pnkfelix:revert-anon-union-parsing, r=davidtwco 2021-09-15 14:56:58 -07:00
rustc_ast_lowering Rollup merge of #88775 - pnkfelix:revert-anon-union-parsing, r=davidtwco 2021-09-15 14:56:58 -07:00
rustc_ast_passes Rollup merge of #88775 - pnkfelix:revert-anon-union-parsing, r=davidtwco 2021-09-15 14:56:58 -07:00
rustc_ast_pretty Revert "Implement Anonymous{Struct, Union} in the AST" 2021-09-09 09:14:17 -04:00
rustc_attr Remove Session.used_attrs and move logic to CheckAttrVisitor 2021-08-21 13:27:27 -05:00
rustc_borrowck Auto merge of #88719 - estebank:point-at-arg-for-obligation, r=nagisa 2021-09-16 22:17:33 +00:00
rustc_builtin_macros Rollup merge of #88209 - Amanieu:asm_in_underscore, r=nagisa 2021-09-11 08:23:40 -07:00
rustc_codegen_cranelift Auto merge of #88839 - nbdd0121:alignof, r=nagisa 2021-09-12 23:49:24 +00:00
rustc_codegen_llvm Auto merge of #87867 - bjorn3:unique_type_id_interner, r=wesleywiser 2021-09-15 12:34:31 +00:00
rustc_codegen_ssa Auto merge of #88839 - nbdd0121:alignof, r=nagisa 2021-09-12 23:49:24 +00:00
rustc_const_eval Rollup merge of #88933 - tmiasko:remove-min-align-of, r=oli-obk 2021-09-15 14:57:03 -07:00
rustc_data_structures Rollup merge of #88711 - Mark-Simulacrum:fix-dfs-bug, r=jackh726 2021-09-12 03:44:57 -07:00
rustc_driver Rename rustc_mir to rustc_const_eval. 2021-09-07 20:46:26 +02:00
rustc_error_codes Update E0785.md 2021-08-30 22:18:55 -07:00
rustc_errors Auto merge of #87915 - estebank:fancy-spans, r=oli-obk 2021-09-13 16:31:12 +00:00
rustc_expand chore(rustc_expand): fix typo in comment 2021-09-15 09:13:18 -07:00
rustc_feature Rollup merge of #88775 - pnkfelix:revert-anon-union-parsing, r=davidtwco 2021-09-15 14:56:58 -07:00
rustc_fs_util rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_graphviz rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_hir Auto merge of #88558 - fee1-dead:const-drop, r=oli-obk 2021-09-15 03:51:03 +00:00
rustc_hir_pretty don't convert types into identical types 2021-09-11 10:32:38 +02:00
rustc_incremental Auto merge of #83214 - cjgillot:dep-map, r=michaelwoerister 2021-09-06 23:58:16 +00:00
rustc_index Suggested changes 2021-08-27 16:21:25 -07:00
rustc_infer Auto merge of #88719 - estebank:point-at-arg-for-obligation, r=nagisa 2021-09-16 22:17:33 +00:00
rustc_interface Rollup merge of #87320 - danakj:debug-compilation-dir, r=michaelwoerister 2021-09-15 14:56:56 -07:00
rustc_lexer Fix more “a”/“an” typos 2021-08-22 17:27:18 +02:00
rustc_lint Auto merge of #88558 - fee1-dead:const-drop, r=oli-obk 2021-09-15 03:51:03 +00:00
rustc_lint_defs Add reachable_patterns lint to rfc-2008-non_exhaustive 2021-09-14 15:45:13 -04:00
rustc_llvm RustWrapper: remove some uses of AttrBuilder 2021-09-08 10:47:41 -04:00
rustc_macros Use a separate interner type for UniqueTypeId 2021-09-13 14:42:06 +02:00
rustc_metadata Auto merge of #88759 - Amanieu:panic_in_drop, r=nagisa,eddyb 2021-09-12 20:48:09 +00:00
rustc_middle Auto merge of #88719 - estebank:point-at-arg-for-obligation, r=nagisa 2021-09-16 22:17:33 +00:00
rustc_mir_build Add reachable_patterns lint to rfc-2008-non_exhaustive 2021-09-14 15:45:13 -04:00
rustc_mir_dataflow Make rustc_mir_dataflow::framework::graphviz and rustc_mir_transform::MirPass public 2021-09-15 11:41:37 -07:00
rustc_mir_transform Auto merge of #89019 - Manishearth:rollup-5qp8a5s, r=Manishearth 2021-09-16 19:33:39 +00:00
rustc_monomorphize Rebase fallout. 2021-09-08 20:40:30 +02:00
rustc_parse Rollup merge of #88729 - estebank:struct-literal-using-parens, r=oli-obk 2021-09-16 10:57:18 -07:00
rustc_parse_format rfc3052: Remove authors field from Cargo manifests 2021-07-29 14:56:05 -07:00
rustc_passes don't convert types into identical types 2021-09-11 10:32:38 +02:00
rustc_plugin_impl Remove Session.used_attrs and move logic to CheckAttrVisitor 2021-08-21 13:27:27 -05:00
rustc_privacy add a CastKind to Node::Cast 2021-09-09 01:32:03 +01:00
rustc_query_impl Rollup merge of #88709 - BoxyUwU:thir-abstract-const, r=lcnr 2021-09-12 03:44:56 -07:00
rustc_query_system Auto merge of #78780 - cjgillot:req, r=Mark-Simulacrum 2021-09-11 20:39:47 +00:00
rustc_resolve Auto merge of #87915 - estebank:fancy-spans, r=oli-obk 2021-09-13 16:31:12 +00:00
rustc_save_analysis Bump stage0 compiler to 1.56 2021-09-08 20:51:05 -04:00
rustc_serialize rustc: Remove local variable IDs from Exports 2021-09-10 23:41:48 +03:00
rustc_session Rollup merge of #87320 - danakj:debug-compilation-dir, r=michaelwoerister 2021-09-15 14:56:56 -07:00
rustc_span Rollup merge of #88875 - notriddle:notriddle/cleanup-unused-trait-selection, r=Mark-Simulacrum 2021-09-16 10:57:19 -07:00
rustc_symbol_mangling Rollup merge of #85534 - csmoe:demagnle-assert, r=michaelwoerister 2021-08-29 16:25:28 +02:00
rustc_target Auto merge of #87794 - bonega:enum_niche_prefer_zero, r=nagisa 2021-09-13 22:14:57 +00:00
rustc_trait_selection Auto merge of #88719 - estebank:point-at-arg-for-obligation, r=nagisa 2021-09-16 22:17:33 +00:00
rustc_traits Auto merge of #88371 - Manishearth:rollup-pkkjsme, r=Manishearth 2021-08-27 01:07:17 +00:00
rustc_ty_utils Remove the queries 2021-09-09 05:21:32 +00:00
rustc_type_ir Use index newtyping for TyVid 2021-09-06 22:38:06 -04:00
rustc_typeck Point at argument when evaluating Path's bounds 2021-09-16 12:12:28 +00:00