rust/tests/ui/closures
Michael Goulet 4a01a38466
Rollup merge of #111087 - ibraheemdev:patch-15, r=dtolnay
Implement `Sync` for `mpsc::Sender`

`mpsc::Sender` is currently `!Sync` because the previous implementation contained an optimization where the channel started out as single-producer and was dynamically upgraded on the first clone, which relied on a unique reference to the sender. This optimization is one of the main reasons the old implementation was so complex and was removed in #93563. `mpsc::Sender` can now soundly implement `Sync`.

Note for any potential confusion, this chance does *not* add MPMC behavior. This only affects the already `Send + Clone` *sender*, not *receiver*.

It's technically possible to rely on the `!Sync` behavior in the same way as a `PhantomData<*mut T>`, but that seems very unlikely in practice. Either way, this change is insta-stable and needs an FCP.

`@rustbot` label +T-libs-api -T-libs
2023-06-23 19:47:19 -07:00
..
2229_closure_analysis Auto merge of #112636 - clubby789:no-capture-array-ref, r=cjgillot 2023-06-18 15:48:08 +00:00
binder vars are ? 2023-04-25 19:53:09 +00:00
closure-expected-type
print vars are ? 2023-04-25 19:53:09 +00:00
add_semicolon_non_block_closure.rs
add_semicolon_non_block_closure.stderr
cannot-call-unsized-via-ptr-2.rs Always register sized obligation for argument 2023-06-15 03:18:21 +00:00
cannot-call-unsized-via-ptr-2.stderr Always register sized obligation for argument 2023-06-15 03:18:21 +00:00
cannot-call-unsized-via-ptr.rs Always register sized obligation for argument 2023-06-15 03:18:21 +00:00
cannot-call-unsized-via-ptr.stderr Always register sized obligation for argument 2023-06-15 03:18:21 +00:00
closure_cap_coerce_many_fail.rs
closure_cap_coerce_many_fail.stderr
closure_no_cap_coerce_many_check_pass.rs
closure_no_cap_coerce_many_run_pass.rs
closure_no_cap_coerce_many_unsafe_0.mir.stderr
closure_no_cap_coerce_many_unsafe_0.rs
closure_no_cap_coerce_many_unsafe_0.thir.stderr
closure_no_cap_coerce_many_unsafe_1.rs
closure_promotion.rs
closure-array-break-length.rs
closure-array-break-length.stderr
closure-bounds-cant-promote-superkind-in-struct.rs
closure-bounds-cant-promote-superkind-in-struct.stderr
closure-bounds-static-cant-capture-borrowed.rs
closure-bounds-static-cant-capture-borrowed.stderr
closure-bounds-subtype.rs
closure-bounds-subtype.stderr
closure-expected.rs
closure-expected.stderr
closure-immutable-outer-variable.fixed
closure-immutable-outer-variable.rs
closure-immutable-outer-variable.rs.fixed
closure-immutable-outer-variable.stderr
closure-move-sync.rs update failing ui tests 2023-06-20 19:46:01 -04:00
closure-move-sync.stderr update failing ui tests 2023-06-20 19:46:01 -04:00
closure-no-fn-1.rs
closure-no-fn-1.stderr
closure-no-fn-2.rs
closure-no-fn-2.stderr
closure-no-fn-3.rs
closure-no-fn-3.stderr
closure-no-fn-4.rs
closure-no-fn-4.stderr
closure-no-fn-5.rs
closure-no-fn-5.stderr
closure-referencing-itself-issue-25954.rs
closure-referencing-itself-issue-25954.stderr
closure-reform-bad.rs
closure-reform-bad.stderr
closure-return-type-mismatch.rs
closure-return-type-mismatch.stderr
closure-return-type-must-be-sized.rs
closure-return-type-must-be-sized.stderr
closure-wrong-kind.rs
closure-wrong-kind.stderr
coerce-unsafe-closure-to-unsafe-fn-ptr.mir.stderr
coerce-unsafe-closure-to-unsafe-fn-ptr.rs
coerce-unsafe-closure-to-unsafe-fn-ptr.thir.stderr
coerce-unsafe-to-closure.rs
coerce-unsafe-to-closure.stderr
deeply-nested_closures.rs
diverging-closure.rs
issue-868.rs Move tests 2023-05-08 17:58:01 -03:00
issue-6801.rs
issue-6801.stderr
issue-10398.rs
issue-10398.stderr
issue-23012-supertrait-signature-inference.rs
issue-41366.rs
issue-42463.rs
issue-46742.rs
issue-48109.rs
issue-52437.rs
issue-52437.stderr
issue-67123.rs
issue-67123.stderr
issue-68025.rs
issue-72408-nested-closures-exponential.rs Ignore tests that hang in new solver 2023-06-09 21:57:37 +00:00
issue-78720.rs
issue-78720.stderr
issue-80313-mutable-borrow-in-closure.rs
issue-80313-mutable-borrow-in-closure.stderr
issue-80313-mutable-borrow-in-move-closure.rs
issue-80313-mutable-borrow-in-move-closure.stderr
issue-80313-mutation-in-closure.rs
issue-80313-mutation-in-closure.stderr
issue-80313-mutation-in-move-closure.rs
issue-80313-mutation-in-move-closure.stderr
issue-81700-mut-borrow.rs
issue-81700-mut-borrow.stderr
issue-82438-mut-without-upvar.rs
issue-82438-mut-without-upvar.stderr
issue-84044-drop-non-mut.rs
issue-84044-drop-non-mut.stderr
issue-84128.rs
issue-84128.stderr
issue-87461.rs
issue-87461.stderr
issue-87814-1.rs
issue-87814-2.rs
issue-90871.rs
issue-90871.stderr
issue-97607.rs
issue-99565.rs
issue-99565.stderr
issue-101696.rs
issue-102089-multiple-opaque-cast.rs
issue-109188.rs
issue-109188.stderr
issue-111932.rs diagnostics: do not suggest type name tweaks on type-inferred closure args 2023-06-05 19:05:15 -07:00
issue-111932.stderr diagnostics: do not suggest type name tweaks on type-inferred closure args 2023-06-05 19:05:15 -07:00
local-type-mix.rs
local-type-mix.stderr
multiple-fn-bounds.rs
multiple-fn-bounds.stderr
old-closure-arg-call-as.rs
old-closure-arg.rs
old-closure-explicit-types.rs
old-closure-expr-precedence.rs
old-closure-expr-precedence.stderr
old-closure-expression-remove-semicolon.fixed
old-closure-expression-remove-semicolon.rs
old-closure-expression-remove-semicolon.stderr
old-closure-fn-coerce.rs
old-closure-iter-1.rs
old-closure-iter-2.rs
once-move-out-on-heap.rs
self-supertrait-bounds.rs
semistatement-in-lambda.rs
static-closures-with-nonstatic-return.rs
supertrait-hint-cycle-2.rs
supertrait-hint-cycle-3.rs
supertrait-hint-cycle.rs
supertrait-hint-references-assoc-ty.rs
thir-unsafeck-issue-85871.rs