rust/tests/ui/async-await
bors 330727467b Auto merge of #112682 - spastorino:new-rpitit-21, r=compiler-errors
Add bidirectional where clauses on RPITIT synthesized GATs

Given the following:

```rust
struct MyStruct<'a, T>(&'a T);

trait MyTrait<'a, T> {
    fn my_fn<'b, 'c, 'd, V>(item: &'c String) -> impl Sized + 'a + 'b + 'c where V: 'b, V: 'd;
}

impl<'a, T> MyTrait<'a, T> for MyStruct<'a, T> {
    fn my_fn<'b, 'c, 'd, V>(_: &'c String) -> impl Sized + 'a + 'b + 'c
    where
        V: 'b,
        V: 'd,
    {
        unimplemented!();
    }
}
```

We need the desugaring to be:

```rust
trait MyTrait<'a, T> {
    type MyFn<'bf, 'df, Vf, 'a2, 'b2, 'c2>: Sized + 'a2 + 'b2 + 'c2 where Vf: 'b2, 'a2: 'a, 'a: 'a2, 'b2: 'bf, 'bf: 'b2;

    fn my_fn<'b, 'c, 'd, V>(item: &'c String) -> MyStruct<'a>::MyFn<'b, 'd, V, 'a, 'b, 'c> where V: 'b, V: 'd {
        type opaque<'a3, 'b3, 'c3>;
    };
}

impl<'a, T> MyIter<'a, T> for MyStruct<'a, T> {
    type MyFn<'bf, 'df, Vf, 'a2, 'b2, 'c2> = impl Sized + 'a2 + 'b2 + 'c2 where Vf: b2, 'a2: 'a, 'a: 'a2, 'b2: 'bf, 'bf: 'b2;

    fn my_fn<'b, 'c, 'd, V>(_: &'c String) -> MyStruct<'a>::MyFn<'a, 'b, 'c, V> where V: 'b, V: 'd {
        type opaque<'a3, 'b3, 'c3>;
        unimplemented!();
    }
}
```

This PR adds the where clauses for the `MyFn` generated GATs.

This is a draft with a very ugly solution so we can make comments over concrete code.

r? `@compiler-errors`
2023-06-29 21:24:51 +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 Auto merge of #112682 - spastorino:new-rpitit-21, r=compiler-errors 2023-06-29 21:24:51 +00:00
issues Fix type-inference regression in #112225 2023-06-04 10:56:00 +02:00
multiple-lifetimes Adjust tests for new drop and forget lints 2023-05-10 19:36:02 +02:00
return-type-notation Make associated type bounds in supertrait position implied 2023-06-27 18:28:07 +00: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 call await a method 2023-04-27 17:18:12 +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
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
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 Add test 2023-04-03 20:45:02 +02:00
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