rust/tests/ui/async-await
Matthias Krüger 32c8c5cb7e
Rollup merge of #121595 - strottos:issue_116615, r=compiler-errors
Better reporting on generic argument mismatchs

This allows better reporting as per issue #116615 .

If you have a function:
```
fn foo(a: T, b: T) {}
```
and call it like so:
```
foo(1, 2.)
```
it'll give improved error reported similar to the following:
```
error[E0308]: mismatched types
 --> generic-mismatch-reporting-issue-116615.rs:6:12
  |
6 |     foo(1, 2.);
  |     --- -  ^^ expected integer, found floating-point number
  |     |   |
  |     |   expected argument `b` to be an integer because that argument needs to match the type of this parameter
  |     arguments to this function are incorrect
  |
note: function defined here
 --> generic-mismatch-reporting-issue-116615.rs:1:4
  |
1 | fn foo<T>(a: T, b: T) {}
  |    ^^^ -  ----  ----
  |        |  |     |
  |        |  |     this parameter needs to match the integer type of `a`
  |        |  `b` needs to match the type of this parameter
  |        `a` and `b` all reference this parameter T
```

Open question, do we need to worry about error message translation into other languages? Not sure what the status of that is in Rust.

NB: Needs some checking over and some tests have altered that need sanity checking, but overall this is starting to get somewhere now. Will take out of draft PR status when this has been done, raising now to allow feedback at this stage, probably 90% ready.
2024-04-03 22:10:59 +02:00
..
async-closures Comments, comments, comments 2024-04-02 20:07:49 -04:00
async-fn Only split by-ref/by-move futures for async closures 2024-03-19 16:59:23 -04:00
auxiliary
await-keyword
drop-order
future-sizes In pretty_print_type(), print async fn futures' paths instead of spans. 2024-03-25 08:01:15 -07:00
in-trait make type_flags(ReError) & HAS_ERROR 2024-03-20 17:29:58 +00:00
issues Bless test fallout (duplicate diagnostics) 2024-03-20 13:00:34 -04:00
multiple-lifetimes
return-type-notation eagerly instantiate binders to avoid relying on sub 2024-03-14 17:19:40 +01:00
track-caller
argument-patterns.rs
async-assoc-fn-anon-lifetimes.rs
async-await-let-else.rs
async-await-let-else.stderr Remove redundant coroutine captures note 2024-03-19 12:02:21 -04:00
async-await.rs
async-block-control-flow-static-semantics.rs
async-block-control-flow-static-semantics.stderr
async-borrowck-escaping-block-error.fixed
async-borrowck-escaping-block-error.rs
async-borrowck-escaping-block-error.stderr
async-borrowck-escaping-closure-error.rs
async-borrowck-escaping-closure-error.stderr
async-closure-matches-expr.rs
async-closure.rs
async-error-span.rs
async-error-span.stderr
async-fn-elided-impl-lifetime-parameter.rs
async-fn-nonsend.rs
async-fn-nonsend.stderr
async-fn-path-elision.rs
async-fn-path-elision.stderr
async-fn-send-uses-nonsend.rs
async-fn-size-moved-locals.rs
async-fn-size-uninit-locals.rs
async-fn-size.rs
async-is-unwindsafe.rs update tests 2024-03-29 14:27:13 -07:00
async-is-unwindsafe.stderr update tests 2024-03-29 14:27:13 -07:00
async-matches-expr.rs
async-outside-of-await-issue-121096.rs
async-outside-of-await-issue-121096.stderr
async-trait-fn.rs
async-unsafe-fn-call-in-safe.rs
async-unsafe-fn-call-in-safe.stderr
async-with-closure.rs
await-into-future.rs
await-sequence.rs
await-unsize.rs
awaiting-unsized-param.rs
awaiting-unsized-param.stderr
bound-normalization.rs
clone-suggestion.fixed
clone-suggestion.rs
clone-suggestion.stderr
conditional-and-guaranteed-initialization.rs
const-async-fn-in-main.rs
const-async-fn-in-main.stderr
coroutine-desc.rs
coroutine-desc.stderr Refactored a few bits: 2024-03-15 13:37:41 +00:00
coroutine-not-future.rs
coroutine-not-future.stderr
debug-ice-attempted-to-add-with-overflow.rs
debug-ice-attempted-to-add-with-overflow.stderr
deep-futures-are-freeze.rs
default-struct-update.rs
dont-print-desugared-async.rs
dont-print-desugared-async.stderr
dont-suggest-await-on-method-return-mismatch.rs
dont-suggest-await-on-method-return-mismatch.stderr
dont-suggest-missing-await.rs
dont-suggest-missing-await.stderr
drop-and-assign.rs
drop-track-bad-field-in-fru.rs
drop-track-bad-field-in-fru.stderr
drop-track-field-assign-nonsend.rs
drop-track-field-assign-nonsend.stderr
drop-track-field-assign.rs
drop-tracking-unresolved-typeck-results.rs
drop-tracking-unresolved-typeck-results.stderr
edition-deny-async-fns-2015.rs
edition-deny-async-fns-2015.stderr
expansion-in-attrs.rs
feature-async-closure.rs
feature-async-closure.stderr
feature-async-for-loop.rs
feature-async-for-loop.stderr
feature-self-return-type.rs
feature-self-return-type.stderr
field-assign-nonsend.rs
field-assign-nonsend.stderr
field-assign.rs
for-await-2015.rs
for-await-consumes-iter.rs
for-await-consumes-iter.stderr
for-await-passthrough.rs
for-await.rs
future-contains-err-issue-115188.rs
future-contains-err-issue-115188.stderr
futures-api.rs
generics-and-bounds.rs
incorrect-move-async-order-issue-79694.fixed
incorrect-move-async-order-issue-79694.rs
incorrect-move-async-order-issue-79694.stderr
inference_var_self_argument.rs
inference_var_self_argument.stderr
interior-with-const-generic-expr.rs
issue-54239-private-type-triggers-lint.rs
issue-60709.rs
issue-61076.rs
issue-61076.stderr
issue-61452.rs
issue-61452.stderr
issue-61793.rs
issue-62658.rs
issue-63832-await-short-temporary-lifetime-1.rs
issue-63832-await-short-temporary-lifetime.rs
issue-64130-1-sync.rs
issue-64130-1-sync.stderr
issue-64130-2-send.rs
issue-64130-2-send.stderr
issue-64130-3-other.rs
issue-64130-3-other.stderr
issue-64130-4-async-move.rs
issue-64130-non-send-future-diags.rs
issue-64130-non-send-future-diags.stderr
issue-64391.rs
issue-65634-raw-ident-suggestion.edition2015.stderr
issue-65634-raw-ident-suggestion.edition2018.stderr
issue-65634-raw-ident-suggestion.rs
issue-66312.rs
issue-66312.stderr
issue-66387-if-without-else.rs
issue-66387-if-without-else.stderr
issue-67252-unnamed-future.rs
issue-67252-unnamed-future.stderr
issue-67651.rs
issue-67651.stderr
issue-67765-async-diagnostic.rs
issue-67765-async-diagnostic.stderr
issue-68112.rs
issue-68112.stderr Remove redundant coroutine captures note 2024-03-19 12:02:21 -04:00
issue-68523-start.rs
issue-68523-start.stderr
issue-68523.rs
issue-68523.stderr
issue-69446-fnmut-capture.rs
issue-69446-fnmut-capture.stderr
issue-70594.rs
issue-70594.stderr
issue-70818.rs
issue-70818.stderr
issue-70935-complex-spans.rs
issue-70935-complex-spans.stderr Remove redundant coroutine captures note 2024-03-19 12:02:21 -04:00
issue-71137.rs
issue-71137.stderr
issue-72442.rs
issue-72442.stderr
issue-72470-llvm-dominate.rs
issue-72590-type-error-sized.rs
issue-72590-type-error-sized.stderr
issue-73050.rs
issue-73137.rs
issue-73541-1.rs
issue-73541-1.stderr
issue-73541-2.rs
issue-73541-2.stderr
issue-73541-3.rs
issue-73541-3.stderr
issue-73541.rs
issue-73541.stderr
issue-73741-type-err.rs
issue-73741-type-err.stderr
issue-74047.rs
issue-74047.stderr
issue-74072-lifetime-name-annotations.rs
issue-74072-lifetime-name-annotations.stderr
issue-74497-lifetime-in-opaque.rs
issue-74497-lifetime-in-opaque.stderr
issue-75785-confusing-named-region.rs
issue-75785-confusing-named-region.stderr
issue-76547.rs
issue-76547.stderr
issue-77993-2.rs
issue-77993-2.stderr
issue-78115.rs
issue-84841.rs
issue-84841.stderr
issue-86507.rs
issue-86507.stderr
issue-93197.rs
issue-93648.rs
issue-98634.rs
issue-98634.stderr
issue-101715.rs
issue-101715.stderr
issue-105501.rs
issue-107036.rs
issue-108572.fixed
issue-108572.rs
issue-108572.stderr
missed-capture-issue-107414.rs
missing-return-in-async-block.fixed
missing-return-in-async-block.rs
missing-return-in-async-block.stderr
move-part-await-return-rest-struct.rs
move-part-await-return-rest-tuple.rs
mutually-recursive-async-impl-trait-type.rs
mutually-recursive-async-impl-trait-type.stderr
nested-in-impl.rs
no-async-const.rs
no-async-const.stderr
no-const-async.rs
no-const-async.stderr
no-move-across-await-struct.rs
no-move-across-await-struct.stderr
no-move-across-await-tuple.rs
no-move-across-await-tuple.stderr
no-non-guaranteed-initialization.rs
no-non-guaranteed-initialization.stderr
no-params-non-move-async-closure.rs
no-std.rs
no-unsafe-async.rs
no-unsafe-async.stderr
non-trivial-drop.rs
normalize-output-in-signature-deduction.rs
partial-drop-partial-reinit.rs Remove redundant coroutine captures note 2024-03-19 12:02:21 -04:00
partial-drop-partial-reinit.stderr Remove redundant coroutine captures note 2024-03-19 12:02:21 -04:00
partial-initialization-across-await.rs
partial-initialization-across-await.stderr
pin-needed-to-poll-2.rs
pin-needed-to-poll-2.stderr
pin-needed-to-poll.rs
pin-needed-to-poll.stderr
proper-span-for-type-error.fixed
proper-span-for-type-error.rs
proper-span-for-type-error.stderr
recursive-async-impl-trait-type.rs
recursive-async-impl-trait-type.stderr
repeat_count_const_in_async_fn.rs
return-ty-raw-ptr-coercion.rs
return-ty-unsize-coercion.rs
send-bound-async-closure.rs Don't ICE when encountering bound regions in generator interior type 2024-03-19 11:30:12 -04:00
suggest-missing-await-closure.fixed
suggest-missing-await-closure.rs
suggest-missing-await-closure.stderr
suggest-missing-await.rs
suggest-missing-await.stderr
suggest-switching-edition-on-await-cargo.rs
suggest-switching-edition-on-await-cargo.stderr
suggest-switching-edition-on-await.rs
suggest-switching-edition-on-await.stderr
task-context-arg.rs
try-on-option-in-async.rs
try-on-option-in-async.stderr
type-parameter-send.rs
unnecessary-await.rs
unnecessary-await.stderr
unreachable-lint-1.rs
unreachable-lint-1.stderr
unreachable-lint.rs
unresolved_type_param.rs
unresolved_type_param.stderr
unsized-across-await.rs
unsized-across-await.stderr
unused-lifetime.rs
unused-lifetime.stderr