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 Make async removal span more resilient to macro expansions 2023-04-27 18:25:07 +00:00
drop-order
future-sizes bless tests 2023-04-27 22:29:04 +02:00
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 Adjust tests for new drop and forget lints 2023-05-10 19:36:02 +02:00
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 Tweak await span 2023-04-27 17:18:11 +00:00
async-await-let-else.drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
async-await-let-else.drop-tracking.stderr
async-await-let-else.no_drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
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 Tweak await span 2023-04-27 17:18:11 +00:00
async-error-span.no_drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
async-error-span.rs
async-fn-elided-impl-lifetime-parameter.rs
async-fn-nonsend.drop_tracking_mir.stderr Tweak await span 2023-04-27 17:18:11 +00:00
async-fn-nonsend.drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
async-fn-nonsend.no_drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
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 Tweak await span 2023-04-27 17:18:11 +00:00
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 Tweak await span 2023-04-27 17:18:11 +00:00
clone-suggestion.rs Tweak await span 2023-04-27 17:18:11 +00:00
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 Tweak await span 2023-04-27 17:18:11 +00:00
drop-track-field-assign-nonsend.drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
drop-track-field-assign-nonsend.no_drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
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 Extend and use hir::Node::body_id 2023-04-19 19:13:45 +00:00
field-assign-nonsend.drop_tracking_mir.stderr Tweak await span 2023-04-27 17:18:11 +00:00
field-assign-nonsend.drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
field-assign-nonsend.no_drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
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 Extend and use hir::Node::body_id 2023-04-19 19:13:45 +00:00
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 Tweak await span 2023-04-27 17:18:11 +00:00
issue-64130-1-sync.drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
issue-64130-1-sync.no_drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
issue-64130-1-sync.rs
issue-64130-2-send.drop_tracking_mir.stderr Tweak await span 2023-04-27 17:18:11 +00:00
issue-64130-2-send.drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
issue-64130-2-send.no_drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
issue-64130-2-send.rs
issue-64130-3-other.drop_tracking_mir.stderr Tweak await span 2023-04-27 17:18:11 +00:00
issue-64130-3-other.drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
issue-64130-3-other.no_drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
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 Tweak await span 2023-04-27 17:18:11 +00:00
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 Tweak await span 2023-04-27 17:18:11 +00:00
issue-67252-unnamed-future.drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
issue-67252-unnamed-future.no_drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
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 Tweak await span 2023-04-27 17:18:11 +00:00
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 Tweak await span 2023-04-27 17:18:11 +00:00
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 Make missing impl item suggestions more obvious that they're missing 2023-04-19 17:57:37 +00:00
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 Tweak await span 2023-04-27 17:18:11 +00:00
issue-101715.rs
issue-101715.stderr tweak removal span 2023-04-27 17:18:12 +00:00
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 Added diagnostic for pin! macro in addition to Box::pin if Unpin isn't implemented 2023-04-12 18:03:11 -04:00
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 Preserve argument indexes when inlining MIR 2023-04-11 11:07:48 +10:00
try-on-option-in-async.rs
try-on-option-in-async.stderr
type-parameter-send.rs
unnecessary-await.rs Make async removal span more resilient to macro expansions 2023-04-27 18:25:07 +00:00
unnecessary-await.stderr Make async removal span more resilient to macro expansions 2023-04-27 18:25:07 +00:00
unreachable-lint-1.rs
unreachable-lint-1.stderr
unreachable-lint.rs
unresolved_type_param.drop_tracking_mir.stderr
unresolved_type_param.drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
unresolved_type_param.no_drop_tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
unresolved_type_param.rs
unused-lifetime.rs
unused-lifetime.stderr