rust/compiler
Guillaume Gomez 0e5e04b89a
Rollup merge of #116250 - estebank:closure-arg-inference-span, r=petrochenkov
On type error of closure call argument, point at earlier calls that affected inference

Mitigate part of  https://github.com/rust-lang/rust/issues/71209.

When we encounter a type error on a specific argument of a closure call argument, where the closure's definition doesn't have a type specified, look for other calls of the closure to try and find the specific call that cased that argument to be inferred of the expected type.

```
error[E0308]: mismatched types
  --> $DIR/unboxed-closures-type-mismatch.rs:30:18
   |
LL |         identity(1u16);
   |         -------- ^^^^ expected `u8`, found `u16`
   |         |
   |         arguments to this function are incorrect
   |
note: expected because the closure was earlier called with an argument of type `u8`
  --> $DIR/unboxed-closures-type-mismatch.rs:29:18
   |
LL |         identity(1u8);
   |         -------- ^^^ expected because this argument is of type `u8`
   |         |
   |         in this closure call
note: closure parameter defined here
  --> $DIR/unboxed-closures-type-mismatch.rs:28:25
   |
LL |         let identity = |x| x;
   |                         ^
help: change the type of the numeric literal from `u16` to `u8`
   |
LL |         identity(1u8);
   |                   ~~
```
2023-10-10 18:44:44 +02:00
..
rustc
rustc_abi
rustc_arena
rustc_ast
rustc_ast_lowering
rustc_ast_passes
rustc_ast_pretty
rustc_attr
rustc_baked_icu_data
rustc_borrowck
rustc_builtin_macros Don't escape_debug the condition of assert!. 2023-10-10 09:08:11 +11:00
rustc_codegen_cranelift
rustc_codegen_gcc
rustc_codegen_llvm
rustc_codegen_ssa
rustc_const_eval Auto merge of #116551 - RalfJung:nondet-nan, r=oli-obk 2023-10-10 11:42:27 +00:00
rustc_data_structures
rustc_driver
rustc_driver_impl
rustc_error_codes
rustc_error_messages
rustc_errors
rustc_expand
rustc_feature
rustc_fluent_macro
rustc_fs_util
rustc_graphviz
rustc_hir
rustc_hir_analysis Rollup merge of #116537 - gurry:116473-ice-sugg-overlap, r=compiler-errors 2023-10-09 16:26:01 +02:00
rustc_hir_pretty
rustc_hir_typeck Rollup merge of #116250 - estebank:closure-arg-inference-span, r=petrochenkov 2023-10-10 18:44:44 +02:00
rustc_incremental
rustc_index
rustc_infer
rustc_interface
rustc_lexer
rustc_lint
rustc_lint_defs
rustc_llvm
rustc_log use env variable to control thread ids in rustc_log 2023-10-10 09:39:47 +08:00
rustc_macros
rustc_metadata
rustc_middle Auto merge of #116497 - compiler-errors:impl-span, r=cjgillot 2023-10-09 21:03:41 +00:00
rustc_mir_build
rustc_mir_dataflow
rustc_mir_transform Rollup merge of #116595 - RalfJung:mir-enable-passes, r=oli-obk 2023-10-10 14:07:48 +02:00
rustc_monomorphize
rustc_parse
rustc_parse_format
rustc_passes Account for macros 2023-10-09 22:48:10 +00:00
rustc_plugin_impl
rustc_privacy
rustc_query_impl
rustc_query_system
rustc_resolve
rustc_serialize
rustc_session Rollup merge of #116595 - RalfJung:mir-enable-passes, r=oli-obk 2023-10-10 14:07:48 +02:00
rustc_smir
rustc_span
rustc_symbol_mangling
rustc_target
rustc_trait_selection Rollup merge of #116596 - lcnr:normalize-subdir, r=compiler-errors 2023-10-10 14:07:48 +02:00
rustc_traits
rustc_transmute
rustc_ty_utils
rustc_type_ir
stable_mir