rust/tests/ui/async-await
bors da1d099f91 Auto merge of #112945 - compiler-errors:tighten-span-of-adjustment-error, r=oli-obk
(re-)tighten sourceinfo span of adjustments in MIR

Diagnostics rely on the spans of MIR statements being (approximately) correct in order to give suggestions relative to that span (i.e. `shrink_to_hi` and `shrink_to_lo`).

I discovered that we're *intentionally* lowering THIR exprs with their parent expr's span if they come from adjustments that are due to a parent expression. While I understand why that may be desirable to demonstrate the relationship of an adjustment and the expression that requires it, it leads to

1. very verbose borrowck output
2. incorrect spans for suggestions

Some diagnostics get around that by giving suggestions relative to other spans we've collected during MIR lowering, such as the span of the method's identifier (e.g. `name` in `.name()`), but this doesn't work too well when things come from desugaring.

I assume it also has lead to numerous tweaks and complications to diagnostics code down the road, which this PR doesn't necessarily aim to fix but may open the gates to fixing later... The last three commits are simplifications due to the fact that we can assume that the move span actually points to what is being moved (and a test).

This regressed in #89110, which was debated somewhat in #90286. cc `@Aaron1011` who originally made this change.

r? diagnostics

Fixes #113547
Fixes #111016
2023-07-12 12:11:09 +00:00
..
auxiliary
await-keyword
drop-order
future-sizes
in-trait Replace RPITIT current impl with new strategy that lowers as a GAT 2023-07-08 18:21:34 -03:00
issues Do not set up wrong span for adjustments 2023-07-10 20:09:26 +00:00
multiple-lifetimes
return-type-notation Replace RPITIT current impl with new strategy that lowers as a GAT 2023-07-08 18:21:34 -03:00
track-caller
argument-patterns.rs
async-assoc-fn-anon-lifetimes.rs
async-await-let-else.drop_tracking_mir.stderr
async-await-let-else.drop_tracking.stderr
async-await-let-else.drop-tracking.stderr
async-await-let-else.no_drop_tracking.stderr
async-await-let-else.no-drop-tracking.stderr
async-await-let-else.rs
async-await.rs
async-block-control-flow-static-semantics.rs
async-block-control-flow-static-semantics.stderr Note base types of coercion 2023-05-12 00:10:52 +00:00
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.drop_tracking_mir.stderr
async-error-span.drop_tracking.stderr
async-error-span.no_drop_tracking.stderr
async-error-span.rs
async-fn-elided-impl-lifetime-parameter.rs
async-fn-nonsend.drop_tracking_mir.stderr
async-fn-nonsend.drop_tracking.stderr
async-fn-nonsend.no_drop_tracking.stderr
async-fn-nonsend.rs
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
async-is-unwindsafe.stderr
async-matches-expr.rs
async-trait-fn.current.stderr
async-trait-fn.next.stderr
async-trait-fn.rs
async-trait-fn.stderr
async-unsafe-fn-call-in-safe.mir.stderr
async-unsafe-fn-call-in-safe.rs
async-unsafe-fn-call-in-safe.thir.stderr
async-with-closure.rs
await-into-future.rs
await-sequence.rs
await-unsize.rs
bound-normalization.rs
clone-suggestion.fixed
clone-suggestion.rs
clone-suggestion.stderr Don't use method span on clone suggestion 2023-07-10 20:09:28 +00:00
conditional-and-guaranteed-initialization.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 Don't mention already set fields 2023-06-05 21:00:08 +00:00
drop-track-field-assign-nonsend.drop_tracking_mir.stderr
drop-track-field-assign-nonsend.drop_tracking.stderr
drop-track-field-assign-nonsend.no_drop_tracking.stderr
drop-track-field-assign-nonsend.rs
drop-track-field-assign.rs Adjust UI tests for unit_bindings 2023-06-12 20:24:48 +08:00
drop-tracking-unresolved-typeck-results.rs
drop-tracking-unresolved-typeck-results.stderr
edition-deny-async-fns-2015.current.stderr
edition-deny-async-fns-2015.next.stderr
edition-deny-async-fns-2015.rs Replace RPITIT current impl with new strategy that lowers as a GAT 2023-07-08 18:21:34 -03:00
edition-deny-async-fns-2015.stderr Replace RPITIT current impl with new strategy that lowers as a GAT 2023-07-08 18:21:34 -03:00
expansion-in-attrs.rs
feature-async-closure.rs
feature-async-closure.stderr
feature-gate-async_fn_in_trait.rs
feature-gate-async_fn_in_trait.stderr
feature-self-return-type.rs
feature-self-return-type.stderr
field-assign-nonsend.drop_tracking_mir.stderr
field-assign-nonsend.drop_tracking.stderr
field-assign-nonsend.no_drop_tracking.stderr
field-assign-nonsend.rs
field-assign.rs Adjust UI tests for unit_bindings 2023-06-12 20:24:48 +08:00
futures-api.rs
generator-desc.rs
generator-desc.stderr
generator-not-future.rs
generator-not-future.stderr
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
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 Do not set up wrong span for adjustments 2023-07-10 20:09:26 +00:00
issue-61793.rs
issue-61949-self-return-type.rs
issue-61949-self-return-type.stderr
issue-62658.rs
issue-63832-await-short-temporary-lifetime-1.rs
issue-63832-await-short-temporary-lifetime.rs
issue-64130-1-sync.drop_tracking_mir.stderr
issue-64130-1-sync.drop_tracking.stderr
issue-64130-1-sync.no_drop_tracking.stderr
issue-64130-1-sync.rs
issue-64130-2-send.drop_tracking_mir.stderr
issue-64130-2-send.drop_tracking.stderr
issue-64130-2-send.no_drop_tracking.stderr
issue-64130-2-send.rs
issue-64130-3-other.drop_tracking_mir.stderr
issue-64130-3-other.drop_tracking.stderr
issue-64130-3-other.no_drop_tracking.stderr
issue-64130-3-other.rs
issue-64130-4-async-move.drop-tracking.stderr
issue-64130-4-async-move.no_drop_tracking.stderr Adjust UI tests for unit_bindings 2023-06-12 20:24:48 +08:00
issue-64130-4-async-move.rs Adjust UI tests for unit_bindings 2023-06-12 20:24:48 +08:00
issue-64130-non-send-future-diags.rs
issue-64130-non-send-future-diags.stderr
issue-64391.rs
issue-66312.rs
issue-66312.stderr
issue-66387-if-without-else.rs
issue-66387-if-without-else.stderr
issue-67252-unnamed-future.drop_tracking_mir.stderr
issue-67252-unnamed-future.drop_tracking.stderr
issue-67252-unnamed-future.no_drop_tracking.stderr
issue-67252-unnamed-future.rs
issue-67651.rs
issue-67651.stderr
issue-67765-async-diagnostic.rs
issue-67765-async-diagnostic.stderr
issue-68112.drop_tracking_mir.stderr
issue-68112.drop_tracking.stderr
issue-68112.no_drop_tracking.stderr
issue-68112.rs
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.drop_tracking_mir.stderr
issue-70818.drop_tracking.stderr
issue-70818.no_drop_tracking.stderr
issue-70818.rs
issue-70935-complex-spans.drop_tracking_mir.stderr update failing ui tests 2023-06-20 19:46:01 -04:00
issue-70935-complex-spans.drop_tracking.stderr update failing ui tests 2023-06-20 19:46:01 -04:00
issue-70935-complex-spans.no_drop_tracking.stderr update failing ui tests 2023-06-20 19:46:01 -04:00
issue-70935-complex-spans.rs update failing ui tests 2023-06-20 19:46:01 -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-drop-tracking.drop_tracking_mir.stderr
issue-73741-type-err-drop-tracking.drop_tracking.stderr
issue-73741-type-err-drop-tracking.no_drop_tracking.stderr
issue-73741-type-err-drop-tracking.rs
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 Move tests 2023-05-24 19:35:59 -03:00
issue-84841.rs
issue-84841.stderr
issue-86507.drop_tracking_mir.stderr Note base types of coercion 2023-05-12 00:10:52 +00:00
issue-86507.drop_tracking.stderr Note base types of coercion 2023-05-12 00:10:52 +00:00
issue-86507.no_drop_tracking.stderr Note base types of coercion 2023-05-12 00:10:52 +00:00
issue-86507.rs
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.rs
issue-108572.stderr
large_moves.attribute.stderr
large_moves.option.stderr
large_moves.rs
missed-capture-issue-107414.rs
move-part-await-return-rest-struct.rs
move-part-await-return-rest-tuple.rs
mutually-recursive-async-impl-trait-type.drop_tracking_mir.stderr
mutually-recursive-async-impl-trait-type.drop_tracking.stderr
mutually-recursive-async-impl-trait-type.no_drop_tracking.stderr
mutually-recursive-async-impl-trait-type.rs
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-params-non-move-async-closure.stderr
no-std.rs
no-unsafe-async.rs
no-unsafe-async.stderr
non-trivial-drop.rs Adjust UI tests for unit_bindings 2023-06-12 20:24:48 +08:00
partial-drop-partial-reinit.drop_tracking.stderr
partial-drop-partial-reinit.no_drop_tracking.stderr
partial-drop-partial-reinit.rs
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.drop_tracking_mir.stderr
recursive-async-impl-trait-type.drop_tracking.stderr
recursive-async-impl-trait-type.no_drop_tracking.stderr
recursive-async-impl-trait-type.rs
repeat_count_const_in_async_fn.rs
return-ty-raw-ptr-coercion.rs
return-ty-unsize-coercion.rs
send-bound-async-closure.rs
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.drop_tracking_mir.stderr
unresolved_type_param.drop_tracking.stderr
unresolved_type_param.no_drop_tracking.stderr
unresolved_type_param.rs
unused-lifetime.rs
unused-lifetime.stderr