Skip to content

Conversation

matthiaskrgr
Copy link
Member

@matthiaskrgr matthiaskrgr commented Sep 21, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

pvdrz and others added 11 commits September 16, 2025 10:26
All platforms define this structure the same way, so we can just put it in the `process` module directly.
…zelmann

Port #[macro_export] to the new attribute parsing infrastructure

Ports macro_export to the new attribute parsing infrastructure for rust-lang#131229 (comment)

r? `@oli-obk`

cc `@JonathanBrouwer` `@jdonszelmann`
…erage, r=ibraheemdev

Improve `core::sync::atomic` coverage

This PR improves the `core::sync::atomic` coverage by adding new tests to `coretests`.

r? libs
…ulacrum

ci: x86_64-gnu-tools: Add `--test-args` regression test

See rust-lang#146601 (comment)

r? `@Mark-Simulacrum`
…imulacrum

std: merge definitions of `StdioPipes`

All platforms define this structure the same way, so we can just put it in the `process` module directly.
… r=Mark-Simulacrum

Allow shared access to `Exclusive<T>` when `T: Sync`

Addresses libs-api request in rust-lang#98407 (comment).

Adds the following trait impls to `Exclusive<T>`, all bounded on `T: Sync`:

- `AsRef<T>`
- `Clone`
- `Copy`
- `PartialEq`
- `StructuralPartialEq`
- `Eq`
- `Hash`
- `PartialOrd`
- `Ord`
- `Fn`

`@rustbot` label T-libs-api
@rustbot rustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) A-CI Area: Our Github Actions CI A-rustdoc-json Area: Rustdoc JSON backend A-testsuite Area: The testsuite used to check the correctness of rustc S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. rollup A PR which is a rollup labels Sep 21, 2025
@matthiaskrgr
Copy link
Member Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Sep 21, 2025

📌 Commit 1001c7d has been approved by matthiaskrgr

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Sep 21, 2025
@GrigorenkoPV
Copy link
Contributor

Probably going to fail: #146675 (comment)

@matthiaskrgr
Copy link
Member Author

yeah, just hit that locally while running the tests xD

@rust-log-analyzer
Copy link
Collaborator

The job aarch64-gnu-llvm-20-1 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
---- [ui] tests/ui/explicit-tail-calls/callee_is_weird.rs stdout ----
Saved the actual stderr to `/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/explicit-tail-calls/callee_is_weird/callee_is_weird.stderr`
diff of stderr:

12 LL |     become (&mut &std::sync::Exclusive::new(f))()
13    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
14    |
-    = note: callee has type `Exclusive<fn() {f}>`
+    = note: callee has type `&Exclusive<fn() {f}>`
16 
17 error: tail calls can only be performed with function definitions or pointers
18   --> $DIR/callee_is_weird.rs:22:12


The actual stderr differed from the expected stderr
To update references, rerun the tests and pass the `--bless` flag
To only update this specific test, also pass `--test-args explicit-tail-calls/callee_is_weird.rs`

error: 1 errors occurred comparing output.
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/explicit-tail-calls/callee_is_weird.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/explicit-tail-calls/callee_is_weird" "-A" "unused" "-A" "internal_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers"
stdout: none
--- stderr -------------------------------
error: tail calls can only be performed with function definitions or pointers
##[error]  --> /checkout/tests/ui/explicit-tail-calls/callee_is_weird.rs:7:12
   |
LL |     become std::sync::Exclusive::new(f)() //~ error: tail calls can only be performed with function definitions or pointers
   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: callee has type `Exclusive<fn() {f}>`

error: tail calls can only be performed with function definitions or pointers
##[error]  --> /checkout/tests/ui/explicit-tail-calls/callee_is_weird.rs:11:12
   |
LL |     become (&mut &std::sync::Exclusive::new(f))() //~ error: tail calls can only be performed with function definitions or pointers
   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: callee has type `&Exclusive<fn() {f}>`

error: tail calls can only be performed with function definitions or pointers
##[error]  --> /checkout/tests/ui/explicit-tail-calls/callee_is_weird.rs:22:12
   |
LL |     become J(); //~ error: tail calls can only be performed with function definitions or pointers
   |            ^^^
   |
   = note: callee has type `J`

error: aborting due to 3 previous errors
------------------------------------------

---- [ui] tests/ui/explicit-tail-calls/callee_is_weird.rs stdout end ----
---- [ui] tests/ui/impl-trait/where-allowed.rs stdout ----
Saved the actual stderr to `/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/impl-trait/where-allowed/where-allowed.stderr`
diff of stderr:

387              where A: Tuple, F: Fn<A>, F: ?Sized;
388            - impl<Args, F, A> Fn<Args> for Box<F, A>
389              where Args: Tuple, F: Fn<Args>, A: Allocator, F: ?Sized;
+            - impl<F, Args> Fn<Args> for Exclusive<F>
+              where F: Sync, F: Fn<Args>, Args: Tuple;
390 
391 error[E0118]: no nominal type found for inherent implementation
392   --> $DIR/where-allowed.rs:240:1


The actual stderr differed from the expected stderr
To update references, rerun the tests and pass the `--bless` flag
To only update this specific test, also pass `--test-args impl-trait/where-allowed.rs`

error: 1 errors occurred comparing output.
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/impl-trait/where-allowed.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/impl-trait/where-allowed" "-A" "unused" "-A" "internal_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers"
stdout: none
--- stderr -------------------------------
error[E0666]: nested `impl Trait` is not allowed
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:50:51
   |
LL | fn in_impl_Fn_parameter_in_parameters(_: &impl Fn(impl Debug)) { panic!() }
   |                                           --------^^^^^^^^^^-
   |                                           |       |
   |                                           |       nested `impl Trait` here
   |                                           outer `impl Trait`

error[E0666]: nested `impl Trait` is not allowed
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:59:57
   |
LL | fn in_impl_Fn_parameter_in_return() -> &'static impl Fn(impl Debug) { panic!() }
   |                                                 --------^^^^^^^^^^-
   |                                                 |       |
   |                                                 |       nested `impl Trait` here
   |                                                 outer `impl Trait`

error[E0658]: `impl Trait` in associated types is unstable
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:121:16
   |
LL |     type Out = impl Debug;
   |                ^^^^^^^^^^
   |
   = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
   = help: add `#![feature(impl_trait_in_assoc_type)]` to the crate attributes to enable
   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date

error[E0658]: `impl Trait` in type aliases is unstable
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:158:23
   |
LL | type InTypeAlias<R> = impl Debug;
   |                       ^^^^^^^^^^
   |
   = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
   = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date

error[E0658]: `impl Trait` in type aliases is unstable
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:162:39
   |
LL | type InReturnInTypeAlias<R> = fn() -> impl Debug;
   |                                       ^^^^^^^^^^
   |
   = note: see issue #63063 <https://github.com/rust-lang/rust/issues/63063> for more information
   = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date

error[E0562]: `impl Trait` is not allowed in `fn` pointer parameters
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:18:40
   |
LL | fn in_fn_parameter_in_parameters(_: fn(impl Debug)) { panic!() }
   |                                        ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in `fn` pointer return types
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:22:42
   |
LL | fn in_fn_return_in_parameters(_: fn() -> impl Debug) { panic!() }
   |                                          ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in `fn` pointer parameters
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:26:38
   |
LL | fn in_fn_parameter_in_return() -> fn(impl Debug) { panic!() }
   |                                      ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in `fn` pointer return types
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:30:40
   |
LL | fn in_fn_return_in_return() -> fn() -> impl Debug { panic!() }
   |                                        ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the parameters of `Fn` trait bounds
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:34:49
   |
LL | fn in_dyn_Fn_parameter_in_parameters(_: &dyn Fn(impl Debug)) { panic!() }
   |                                                 ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the return type of `Fn` trait bounds
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:38:51
   |
LL | fn in_dyn_Fn_return_in_parameters(_: &dyn Fn() -> impl Debug) { panic!() }
   |                                                   ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the parameters of `Fn` trait bounds
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:42:55
   |
LL | fn in_dyn_Fn_parameter_in_return() -> &'static dyn Fn(impl Debug) { panic!() }
   |                                                       ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the parameters of `Fn` trait bounds
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:50:51
   |
LL | fn in_impl_Fn_parameter_in_parameters(_: &impl Fn(impl Debug)) { panic!() }
   |                                                   ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the return type of `Fn` trait bounds
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:55:53
   |
LL | fn in_impl_Fn_return_in_parameters(_: &impl Fn() -> impl Debug) { panic!() }
   |                                                     ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the parameters of `Fn` trait bounds
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:59:57
   |
LL | fn in_impl_Fn_parameter_in_return() -> &'static impl Fn(impl Debug) { panic!() }
   |                                                         ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the parameters of `Fn` trait bounds
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:68:38
   |
LL | fn in_Fn_parameter_in_generics<F: Fn(impl Debug)> (_: F) { panic!() }
   |                                      ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the return type of `Fn` trait bounds
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:72:40
   |
LL | fn in_Fn_return_in_generics<F: Fn() -> impl Debug> (_: F) { panic!() }
   |                                        ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in field types
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:85:32
   |
LL | struct InBraceStructField { x: impl Debug }
   |                                ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in field types
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:89:41
   |
LL | struct InAdtInBraceStructField { x: Vec<impl Debug> }
   |                                         ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in field types
---

error[E0562]: `impl Trait` is not allowed in field types
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:98:25
   |
LL |     InBraceVariant { x: impl Debug },
   |                         ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in field types
---

error[E0562]: `impl Trait` is not allowed in `fn` pointer return types
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:162:39
   |
LL | type InReturnInTypeAlias<R> = fn() -> impl Debug;
   |                                       ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in traits
---

error[E0562]: `impl Trait` is not allowed in impl headers
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:183:24
   |
LL | impl InInherentImplAdt<impl Debug> {
   |                        ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in bounds
---

error[E0562]: `impl Trait` is not allowed in generic parameter defaults
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:223:40
   |
LL | struct InStructGenericParamDefault<T = impl Debug>(T);
   |                                        ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in generic parameter defaults
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:227:36
   |
LL | enum InEnumGenericParamDefault<T = impl Debug> { Variant(T) }
   |                                    ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in generic parameter defaults
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:231:38
   |
LL | trait InTraitGenericParamDefault<T = impl Debug> {}
   |                                      ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in generic parameter defaults
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:235:41
   |
LL | type InTypeAliasGenericParamDefault<T = impl Debug> = T;
   |                                         ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in generic parameter defaults
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:240:10
   |
LL | impl<T = impl Debug> T {}
   |          ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in generic parameter defaults
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:246:40
   |
LL | fn in_method_generic_param_default<T = impl Debug>(_: T) {}
   |                                        ^^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0562]: `impl Trait` is not allowed in the type of variable bindings
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:250:29
   |
LL |     let _in_local_variable: impl Fn() = || {};
   |                             ^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods
   = note: see issue #63065 <https://github.com/rust-lang/rust/issues/63065> for more information
   = help: add `#![feature(impl_trait_in_bindings)]` to the crate attributes to enable
   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date

error[E0562]: `impl Trait` is not allowed in closure return types
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:252:46
   |
LL |     let _in_return_in_local_variable = || -> impl Fn() { || {} };
   |                                              ^^^^^^^^^
   |
   = note: `impl Trait` is only allowed in arguments and return types of functions and methods

error[E0053]: method `in_trait_impl_return` has an incompatible type for trait
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:128:34
   |
LL |     type Out = impl Debug;
   |                ---------- the expected opaque type
...
LL |     fn in_trait_impl_return() -> impl Debug { () }
   |                                  ^^^^^^^^^^ expected opaque type, found a different opaque type
   |
note: type in trait
  --> /checkout/tests/ui/impl-trait/where-allowed.rs:118:34
   |
LL |     fn in_trait_impl_return() -> Self::Out;
   |                                  ^^^^^^^^^
   = note: expected signature `fn() -> <() as DummyTrait>::Out`
              found signature `fn() -> impl Debug`
   = note: distinct uses of `impl Trait` result in different opaque types
help: change the output type to match the trait
   |
LL -     fn in_trait_impl_return() -> impl Debug { () }
LL +     fn in_trait_impl_return() -> <() as DummyTrait>::Out { () }
   |

error[E0283]: type annotations needed
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:46:57
   |
LL | fn in_dyn_Fn_return_in_return() -> &'static dyn Fn() -> impl Debug { panic!() }
   |                                                         ^^^^^^^^^^ cannot infer type
   |
   = note: cannot satisfy `_: Debug`

error[E0283]: type annotations needed
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:64:46
   |
LL | fn in_impl_Fn_return_in_return() -> &'static impl Fn() -> impl Debug { panic!() }
   |                                              ^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
   |
   = note: multiple `impl`s satisfying `_: Fn()` found in the following crates: `alloc`, `core`:
           - impl<A, F> Fn<A> for &F
             where A: Tuple, F: Fn<A>, F: ?Sized;
           - impl<Args, F, A> Fn<Args> for Box<F, A>
             where Args: Tuple, F: Fn<Args>, A: Allocator, F: ?Sized;
           - impl<F, Args> Fn<Args> for Exclusive<F>
             where F: Sync, F: Fn<Args>, Args: Tuple;

error[E0118]: no nominal type found for inherent implementation
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:240:1
   |
LL | impl<T = impl Debug> T {}
   | ^^^^^^^^^^^^^^^^^^^^^^ impl requires a nominal type
   |
   = note: either implement a trait on it or create a newtype to wrap it instead

error: unconstrained opaque type
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:121:16
---

error: unconstrained opaque type
##[error]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:158:23
   |
LL | type InTypeAlias<R> = impl Debug;
   |                       ^^^^^^^^^^
   |
   = note: `InTypeAlias` must be used in combination with a concrete type within the same crate

error: aborting due to 48 previous errors

Some errors have detailed explanations: E0053, E0118, E0283, E0562, E0658, E0666.
For more information about an error, try `rustc --explain E0053`.
Future incompatibility report: Future breakage diagnostic:
warning: defaults for generic parameters are not allowed here
##[warning]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:246:36
   |
LL | fn in_method_generic_param_default<T = impl Debug>(_: T) {}
   |                                    ^^^^^^^^^^^^^^

Future breakage diagnostic:
warning: defaults for generic parameters are not allowed here
##[warning]  --> /checkout/tests/ui/impl-trait/where-allowed.rs:240:6
   |
LL | impl<T = impl Debug> T {}
   |      ^^^^^^^^^^^^^^
------------------------------------------

---- [ui] tests/ui/impl-trait/where-allowed.rs stdout end ----
---- [ui] tests/ui/traits/next-solver/well-formed-in-relate.rs stdout ----
Saved the actual stderr to `/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/traits/next-solver/well-formed-in-relate/well-formed-in-relate.stderr`
diff of stderr:

12              where A: Tuple, F: Fn<A>, F: ?Sized;
13            - impl<Args, F, A> Fn<Args> for Box<F, A>
14              where Args: Tuple, F: Fn<Args>, A: Allocator, F: ?Sized;
+            - impl<F, Args> Fn<Args> for Exclusive<F>
+              where F: Sync, F: Fn<Args>, Args: Tuple;
15 note: required by a bound in `unconstrained_map`
16   --> $DIR/well-formed-in-relate.rs:21:25
17    |


The actual stderr differed from the expected stderr
To update references, rerun the tests and pass the `--bless` flag
To only update this specific test, also pass `--test-args traits/next-solver/well-formed-in-relate.rs`

error: 1 errors occurred comparing output.
status: exit status: 1
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/traits/next-solver/well-formed-in-relate.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "--emit" "metadata" "-C" "prefer-dynamic" "--out-dir" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/traits/next-solver/well-formed-in-relate" "-A" "unused" "-A" "internal_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers"
stdout: none
--- stderr -------------------------------
error[E0283]: type annotations needed for `Map<_, _>`
##[error]  --> /checkout/tests/ui/traits/next-solver/well-formed-in-relate.rs:2:9
   |
LL |     let x;
   |         ^
...
LL |     x = unconstrained_map();
   |         ------------------- type must be known at this point
   |
   = note: multiple `impl`s satisfying `_: Fn()` found in the following crates: `alloc`, `core`:
           - impl<A, F> Fn<A> for &F
             where A: Tuple, F: Fn<A>, F: ?Sized;
           - impl<Args, F, A> Fn<Args> for Box<F, A>
             where Args: Tuple, F: Fn<Args>, A: Allocator, F: ?Sized;
           - impl<F, Args> Fn<Args> for Exclusive<F>
             where F: Sync, F: Fn<Args>, Args: Tuple;
note: required by a bound in `unconstrained_map`
  --> /checkout/tests/ui/traits/next-solver/well-formed-in-relate.rs:21:25
   |
LL | fn unconstrained_map<T: Fn() -> U, U>() -> <Map<T, U> as Mirror>::Assoc { todo!() }
   |                         ^^^^^^^^^ required by this bound in `unconstrained_map`
help: consider giving `x` an explicit type, where the type for type parameter `T` is specified
   |
LL |     let x: Map<T, U>;
   |          +++++++++++

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-attributes Area: Attributes (`#[…]`, `#![…]`) A-CI Area: Our Github Actions CI A-rustdoc-json Area: Rustdoc JSON backend A-testsuite Area: The testsuite used to check the correctness of rustc rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants