1
Fork 0

Rollup merge of #111048 - compiler-errors:rpitit-not-incomplete, r=jackh726

Mark`feature(return_position_impl_trait_in_trait)` and`feature(async_fn_in_trait)` as not incomplete

I think they've graduated, since as far as I'm aware, they don't cause compiler crashes or unsoundness anymore.
This commit is contained in:
Dylan DPC 2023-05-02 11:44:53 +05:30 committed by GitHub
commit 2e3373c231
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
48 changed files with 59 additions and 363 deletions

View file

@ -310,7 +310,7 @@ declare_features! (
/// Allows `async || body` closures. /// Allows `async || body` closures.
(active, async_closure, "1.37.0", Some(62290), None), (active, async_closure, "1.37.0", Some(62290), None),
/// Allows async functions to be declared, implemented, and used in traits. /// Allows async functions to be declared, implemented, and used in traits.
(incomplete, async_fn_in_trait, "1.66.0", Some(91611), None), (active, async_fn_in_trait, "1.66.0", Some(91611), None),
/// Treat `extern "C"` function as nounwind. /// Treat `extern "C"` function as nounwind.
(active, c_unwind, "1.52.0", Some(74990), None), (active, c_unwind, "1.52.0", Some(74990), None),
/// Allows using C-variadics. /// Allows using C-variadics.
@ -494,7 +494,7 @@ declare_features! (
/// Allows `repr(simd)` and importing the various simd intrinsics. /// Allows `repr(simd)` and importing the various simd intrinsics.
(active, repr_simd, "1.4.0", Some(27731), None), (active, repr_simd, "1.4.0", Some(27731), None),
/// Allows return-position `impl Trait` in traits. /// Allows return-position `impl Trait` in traits.
(incomplete, return_position_impl_trait_in_trait, "1.65.0", Some(91611), None), (active, return_position_impl_trait_in_trait, "1.65.0", Some(91611), None),
/// Allows bounding the return type of AFIT/RPITIT. /// Allows bounding the return type of AFIT/RPITIT.
(incomplete, return_type_notation, "1.70.0", Some(109417), None), (incomplete, return_type_notation, "1.70.0", Some(109417), None),
/// Allows `extern "rust-cold"`. /// Allows `extern "rust-cold"`.

View file

@ -2,7 +2,6 @@
#![feature(return_type_notation, async_fn_in_trait)] #![feature(return_type_notation, async_fn_in_trait)]
//~^ WARN the feature `return_type_notation` is incomplete //~^ WARN the feature `return_type_notation` is incomplete
//~| WARN the feature `async_fn_in_trait` is incomplete
trait Trait { trait Trait {
async fn method() {} async fn method() {}

View file

@ -1,11 +1,11 @@
error: return type notation uses `()` instead of `(..)` for elided arguments error: return type notation uses `()` instead of `(..)` for elided arguments
--> $DIR/bad-inputs-and-output.rs:19:24 --> $DIR/bad-inputs-and-output.rs:18:24
| |
LL | fn baz<T: Trait<method(..): Send>>() {} LL | fn baz<T: Trait<method(..): Send>>() {}
| ^^ help: remove the `..` | ^^ help: remove the `..`
error[E0658]: associated type bounds are unstable error[E0658]: associated type bounds are unstable
--> $DIR/bad-inputs-and-output.rs:11:17 --> $DIR/bad-inputs-and-output.rs:10:17
| |
LL | fn foo<T: Trait<method(i32): Send>>() {} LL | fn foo<T: Trait<method(i32): Send>>() {}
| ^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^
@ -14,7 +14,7 @@ LL | fn foo<T: Trait<method(i32): Send>>() {}
= help: add `#![feature(associated_type_bounds)]` to the crate attributes to enable = help: add `#![feature(associated_type_bounds)]` to the crate attributes to enable
error[E0658]: associated type bounds are unstable error[E0658]: associated type bounds are unstable
--> $DIR/bad-inputs-and-output.rs:15:17 --> $DIR/bad-inputs-and-output.rs:14:17
| |
LL | fn bar<T: Trait<method() -> (): Send>>() {} LL | fn bar<T: Trait<method() -> (): Send>>() {}
| ^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^
@ -31,26 +31,18 @@ LL | #![feature(return_type_notation, async_fn_in_trait)]
= note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information = note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information
= note: `#[warn(incomplete_features)]` on by default = note: `#[warn(incomplete_features)]` on by default
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/bad-inputs-and-output.rs:3:34
|
LL | #![feature(return_type_notation, async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
error: argument types not allowed with return type notation error: argument types not allowed with return type notation
--> $DIR/bad-inputs-and-output.rs:11:23 --> $DIR/bad-inputs-and-output.rs:10:23
| |
LL | fn foo<T: Trait<method(i32): Send>>() {} LL | fn foo<T: Trait<method(i32): Send>>() {}
| ^^^^^ help: remove the input types: `()` | ^^^^^ help: remove the input types: `()`
error: return type not allowed with return type notation error: return type not allowed with return type notation
--> $DIR/bad-inputs-and-output.rs:15:25 --> $DIR/bad-inputs-and-output.rs:14:25
| |
LL | fn bar<T: Trait<method() -> (): Send>>() {} LL | fn bar<T: Trait<method() -> (): Send>>() {}
| ^^^^^^ help: remove the return type | ^^^^^^ help: remove the return type
error: aborting due to 5 previous errors; 2 warnings emitted error: aborting due to 5 previous errors; 1 warning emitted
For more information about this error, try `rustc --explain E0658`. For more information about this error, try `rustc --explain E0658`.

View file

@ -4,7 +4,6 @@
#![feature(return_type_notation, async_fn_in_trait)] #![feature(return_type_notation, async_fn_in_trait)]
//~^ WARN the feature `return_type_notation` is incomplete //~^ WARN the feature `return_type_notation` is incomplete
//~| WARN the feature `async_fn_in_trait` is incomplete
trait Foo { trait Foo {
async fn method() -> Result<(), ()>; async fn method() -> Result<(), ()>;

View file

@ -7,13 +7,5 @@ LL | #![feature(return_type_notation, async_fn_in_trait)]
= note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information = note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information
= note: `#[warn(incomplete_features)]` on by default = note: `#[warn(incomplete_features)]` on by default
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes warning: 1 warning emitted
--> $DIR/basic.rs:5:34
|
LL | #![feature(return_type_notation, async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
warning: 2 warnings emitted

View file

@ -7,31 +7,23 @@ LL | #![feature(return_type_notation, async_fn_in_trait)]
= note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information = note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information
= note: `#[warn(incomplete_features)]` on by default = note: `#[warn(incomplete_features)]` on by default
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/basic.rs:5:34
|
LL | #![feature(return_type_notation, async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
error: future cannot be sent between threads safely error: future cannot be sent between threads safely
--> $DIR/basic.rs:24:13 --> $DIR/basic.rs:23:13
| |
LL | is_send(foo::<T>()); LL | is_send(foo::<T>());
| ^^^^^^^^^^ future returned by `foo` is not `Send` | ^^^^^^^^^^ future returned by `foo` is not `Send`
| |
= help: within `impl Future<Output = Result<(), ()>>`, the trait `Send` is not implemented for `impl Future<Output = Result<(), ()>>` = help: within `impl Future<Output = Result<(), ()>>`, the trait `Send` is not implemented for `impl Future<Output = Result<(), ()>>`
note: future is not `Send` as it awaits another future which is not `Send` note: future is not `Send` as it awaits another future which is not `Send`
--> $DIR/basic.rs:14:5 --> $DIR/basic.rs:13:5
| |
LL | T::method().await?; LL | T::method().await?;
| ^^^^^^^^^^^ await occurs here on type `impl Future<Output = Result<(), ()>>`, which is not `Send` | ^^^^^^^^^^^ await occurs here on type `impl Future<Output = Result<(), ()>>`, which is not `Send`
note: required by a bound in `is_send` note: required by a bound in `is_send`
--> $DIR/basic.rs:18:20 --> $DIR/basic.rs:17:20
| |
LL | fn is_send(_: impl Send) {} LL | fn is_send(_: impl Send) {}
| ^^^^ required by this bound in `is_send` | ^^^^ required by this bound in `is_send`
error: aborting due to previous error; 2 warnings emitted error: aborting due to previous error; 1 warning emitted

View file

@ -2,7 +2,6 @@
#![feature(return_type_notation, async_fn_in_trait)] #![feature(return_type_notation, async_fn_in_trait)]
//~^ WARN the feature `return_type_notation` is incomplete //~^ WARN the feature `return_type_notation` is incomplete
//~| WARN the feature `async_fn_in_trait` is incomplete
use std::future::Future; use std::future::Future;

View file

@ -7,19 +7,11 @@ LL | #![feature(return_type_notation, async_fn_in_trait)]
= note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information = note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information
= note: `#[warn(incomplete_features)]` on by default = note: `#[warn(incomplete_features)]` on by default
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/equality.rs:3:34
|
LL | #![feature(return_type_notation, async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
error: return type notation is not allowed to use type equality error: return type notation is not allowed to use type equality
--> $DIR/equality.rs:13:18 --> $DIR/equality.rs:12:18
| |
LL | fn test<T: Trait<method() = Box<dyn Future<Output = ()>>>>() {} LL | fn test<T: Trait<method() = Box<dyn Future<Output = ()>>>>() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: aborting due to previous error; 2 warnings emitted error: aborting due to previous error; 1 warning emitted

View file

@ -2,7 +2,6 @@
#![feature(return_type_notation, async_fn_in_trait)] #![feature(return_type_notation, async_fn_in_trait)]
//~^ WARN the feature `return_type_notation` is incomplete //~^ WARN the feature `return_type_notation` is incomplete
//~| WARN the feature `async_fn_in_trait` is incomplete
trait Trait { trait Trait {
async fn method() {} async fn method() {}

View file

@ -7,19 +7,11 @@ LL | #![feature(return_type_notation, async_fn_in_trait)]
= note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information = note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information
= note: `#[warn(incomplete_features)]` on by default = note: `#[warn(incomplete_features)]` on by default
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/missing.rs:3:34
|
LL | #![feature(return_type_notation, async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
error: cannot find associated function `methid` in trait `Trait` error: cannot find associated function `methid` in trait `Trait`
--> $DIR/missing.rs:11:17 --> $DIR/missing.rs:10:17
| |
LL | fn bar<T: Trait<methid(): Send>>() {} LL | fn bar<T: Trait<methid(): Send>>() {}
| ^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^
error: aborting due to previous error; 2 warnings emitted error: aborting due to previous error; 1 warning emitted

View file

@ -1,11 +0,0 @@
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/async-default-fn-overridden.rs:6:12
|
LL | #![feature(async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
warning: 1 warning emitted

View file

@ -1,11 +0,0 @@
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/async-default-fn-overridden.rs:6:12
|
LL | #![feature(async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
warning: 1 warning emitted

View file

@ -4,7 +4,6 @@
// revisions: current next // revisions: current next
#![feature(async_fn_in_trait)] #![feature(async_fn_in_trait)]
//~^ WARN the feature `async_fn_in_trait` is incomplete and may not be safe to use
use std::future::Future; use std::future::Future;

View file

@ -1,11 +1,11 @@
error: expected identifier, found keyword `self` error: expected identifier, found keyword `self`
--> $DIR/bad-signatures.rs:9:23 --> $DIR/bad-signatures.rs:8:23
| |
LL | async fn bar(&abc self); LL | async fn bar(&abc self);
| ^^^^ expected identifier, found keyword | ^^^^ expected identifier, found keyword
error: expected one of `:`, `@`, or `|`, found keyword `self` error: expected one of `:`, `@`, or `|`, found keyword `self`
--> $DIR/bad-signatures.rs:9:23 --> $DIR/bad-signatures.rs:8:23
| |
LL | async fn bar(&abc self); LL | async fn bar(&abc self);
| -----^^^^ | -----^^^^
@ -13,14 +13,5 @@ LL | async fn bar(&abc self);
| | expected one of `:`, `@`, or `|` | | expected one of `:`, `@`, or `|`
| help: declare the type after the parameter binding: `<identifier>: <type>` | help: declare the type after the parameter binding: `<identifier>: <type>`
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes error: aborting due to 2 previous errors
--> $DIR/bad-signatures.rs:5:12
|
LL | #![feature(async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
error: aborting due to 2 previous errors; 1 warning emitted

View file

@ -1,11 +1,11 @@
error: expected identifier, found keyword `self` error: expected identifier, found keyword `self`
--> $DIR/bad-signatures.rs:9:23 --> $DIR/bad-signatures.rs:8:23
| |
LL | async fn bar(&abc self); LL | async fn bar(&abc self);
| ^^^^ expected identifier, found keyword | ^^^^ expected identifier, found keyword
error: expected one of `:`, `@`, or `|`, found keyword `self` error: expected one of `:`, `@`, or `|`, found keyword `self`
--> $DIR/bad-signatures.rs:9:23 --> $DIR/bad-signatures.rs:8:23
| |
LL | async fn bar(&abc self); LL | async fn bar(&abc self);
| -----^^^^ | -----^^^^
@ -13,14 +13,5 @@ LL | async fn bar(&abc self);
| | expected one of `:`, `@`, or `|` | | expected one of `:`, `@`, or `|`
| help: declare the type after the parameter binding: `<identifier>: <type>` | help: declare the type after the parameter binding: `<identifier>: <type>`
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes error: aborting due to 2 previous errors
--> $DIR/bad-signatures.rs:5:12
|
LL | #![feature(async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
error: aborting due to 2 previous errors; 1 warning emitted

View file

@ -3,7 +3,6 @@
// revisions: current next // revisions: current next
#![feature(async_fn_in_trait)] #![feature(async_fn_in_trait)]
//~^ WARN the feature `async_fn_in_trait` is incomplete
trait MyTrait { trait MyTrait {
async fn bar(&abc self); async fn bar(&abc self);

View file

@ -1,12 +1,3 @@
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/dont-project-to-specializable-projection.rs:6:12
|
LL | #![feature(async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
error: async associated function in trait cannot be specialized error: async associated function in trait cannot be specialized
--> $DIR/dont-project-to-specializable-projection.rs:16:5 --> $DIR/dont-project-to-specializable-projection.rs:16:5
| |
@ -15,5 +6,5 @@ LL | default async fn foo(_: T) -> &'static str {
| |
= note: specialization behaves in inconsistent and surprising ways with `#![feature(async_fn_in_trait)]`, and for now is disallowed = note: specialization behaves in inconsistent and surprising ways with `#![feature(async_fn_in_trait)]`, and for now is disallowed
error: aborting due to previous error; 1 warning emitted error: aborting due to previous error

View file

@ -1,12 +1,3 @@
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/dont-project-to-specializable-projection.rs:6:12
|
LL | #![feature(async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
error[E0053]: method `foo` has an incompatible type for trait error[E0053]: method `foo` has an incompatible type for trait
--> $DIR/dont-project-to-specializable-projection.rs:16:35 --> $DIR/dont-project-to-specializable-projection.rs:16:35
| |
@ -29,6 +20,6 @@ LL | default async fn foo(_: T) -> &'static str {
| |
= note: specialization behaves in inconsistent and surprising ways with `#![feature(async_fn_in_trait)]`, and for now is disallowed = note: specialization behaves in inconsistent and surprising ways with `#![feature(async_fn_in_trait)]`, and for now is disallowed
error: aborting due to 2 previous errors; 1 warning emitted error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0053`. For more information about this error, try `rustc --explain E0053`.

View file

@ -1,14 +1,5 @@
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/lifetime-mismatch.rs:5:12
|
LL | #![feature(async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
error[E0195]: lifetime parameters or bounds on method `foo` do not match the trait declaration error[E0195]: lifetime parameters or bounds on method `foo` do not match the trait declaration
--> $DIR/lifetime-mismatch.rs:14:17 --> $DIR/lifetime-mismatch.rs:13:17
| |
LL | async fn foo<'a>(&self); LL | async fn foo<'a>(&self);
| ---- lifetimes in impl do not match this method in trait | ---- lifetimes in impl do not match this method in trait
@ -16,6 +7,6 @@ LL | async fn foo<'a>(&self);
LL | async fn foo(&self) {} LL | async fn foo(&self) {}
| ^ lifetimes do not match method in trait | ^ lifetimes do not match method in trait
error: aborting due to previous error; 1 warning emitted error: aborting due to previous error
For more information about this error, try `rustc --explain E0195`. For more information about this error, try `rustc --explain E0195`.

View file

@ -1,14 +1,5 @@
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/lifetime-mismatch.rs:5:12
|
LL | #![feature(async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
error[E0195]: lifetime parameters or bounds on method `foo` do not match the trait declaration error[E0195]: lifetime parameters or bounds on method `foo` do not match the trait declaration
--> $DIR/lifetime-mismatch.rs:14:17 --> $DIR/lifetime-mismatch.rs:13:17
| |
LL | async fn foo<'a>(&self); LL | async fn foo<'a>(&self);
| ---- lifetimes in impl do not match this method in trait | ---- lifetimes in impl do not match this method in trait
@ -16,6 +7,6 @@ LL | async fn foo<'a>(&self);
LL | async fn foo(&self) {} LL | async fn foo(&self) {}
| ^ lifetimes do not match method in trait | ^ lifetimes do not match method in trait
error: aborting due to previous error; 1 warning emitted error: aborting due to previous error
For more information about this error, try `rustc --explain E0195`. For more information about this error, try `rustc --explain E0195`.

View file

@ -3,7 +3,6 @@
// revisions: current next // revisions: current next
#![feature(async_fn_in_trait)] #![feature(async_fn_in_trait)]
//~^ WARN the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
trait MyTrait { trait MyTrait {
async fn foo<'a>(&self); async fn foo<'a>(&self);

View file

@ -1,29 +1,20 @@
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/missing-send-bound.rs:5:12
|
LL | #![feature(async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
error: future cannot be sent between threads safely error: future cannot be sent between threads safely
--> $DIR/missing-send-bound.rs:17:20 --> $DIR/missing-send-bound.rs:16:20
| |
LL | assert_is_send(test::<T>()); LL | assert_is_send(test::<T>());
| ^^^^^^^^^^^ future returned by `test` is not `Send` | ^^^^^^^^^^^ future returned by `test` is not `Send`
| |
= help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `impl Future<Output = ()>` = help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `impl Future<Output = ()>`
note: future is not `Send` as it awaits another future which is not `Send` note: future is not `Send` as it awaits another future which is not `Send`
--> $DIR/missing-send-bound.rs:13:5 --> $DIR/missing-send-bound.rs:12:5
| |
LL | T::bar().await; LL | T::bar().await;
| ^^^^^^^^ await occurs here on type `impl Future<Output = ()>`, which is not `Send` | ^^^^^^^^ await occurs here on type `impl Future<Output = ()>`, which is not `Send`
note: required by a bound in `assert_is_send` note: required by a bound in `assert_is_send`
--> $DIR/missing-send-bound.rs:21:27 --> $DIR/missing-send-bound.rs:20:27
| |
LL | fn assert_is_send(_: impl Send) {} LL | fn assert_is_send(_: impl Send) {}
| ^^^^ required by this bound in `assert_is_send` | ^^^^ required by this bound in `assert_is_send`
error: aborting due to previous error; 1 warning emitted error: aborting due to previous error

View file

@ -1,29 +1,20 @@
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/missing-send-bound.rs:5:12
|
LL | #![feature(async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
error: future cannot be sent between threads safely error: future cannot be sent between threads safely
--> $DIR/missing-send-bound.rs:17:20 --> $DIR/missing-send-bound.rs:16:20
| |
LL | assert_is_send(test::<T>()); LL | assert_is_send(test::<T>());
| ^^^^^^^^^^^ future returned by `test` is not `Send` | ^^^^^^^^^^^ future returned by `test` is not `Send`
| |
= help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `impl Future<Output = ()>` = help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `impl Future<Output = ()>`
note: future is not `Send` as it awaits another future which is not `Send` note: future is not `Send` as it awaits another future which is not `Send`
--> $DIR/missing-send-bound.rs:13:5 --> $DIR/missing-send-bound.rs:12:5
| |
LL | T::bar().await; LL | T::bar().await;
| ^^^^^^^^ await occurs here on type `impl Future<Output = ()>`, which is not `Send` | ^^^^^^^^ await occurs here on type `impl Future<Output = ()>`, which is not `Send`
note: required by a bound in `assert_is_send` note: required by a bound in `assert_is_send`
--> $DIR/missing-send-bound.rs:21:27 --> $DIR/missing-send-bound.rs:20:27
| |
LL | fn assert_is_send(_: impl Send) {} LL | fn assert_is_send(_: impl Send) {}
| ^^^^ required by this bound in `assert_is_send` | ^^^^ required by this bound in `assert_is_send`
error: aborting due to previous error; 1 warning emitted error: aborting due to previous error

View file

@ -3,7 +3,6 @@
// revisions: current next // revisions: current next
#![feature(async_fn_in_trait)] #![feature(async_fn_in_trait)]
//~^ WARN the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
trait Foo { trait Foo {
async fn bar(); async fn bar();

View file

@ -1,20 +1,11 @@
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/object-safety.rs:5:12
|
LL | #![feature(async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
error[E0038]: the trait `Foo` cannot be made into an object error[E0038]: the trait `Foo` cannot be made into an object
--> $DIR/object-safety.rs:13:12 --> $DIR/object-safety.rs:12:12
| |
LL | let x: &dyn Foo = todo!(); LL | let x: &dyn Foo = todo!();
| ^^^^^^^^ `Foo` cannot be made into an object | ^^^^^^^^ `Foo` cannot be made into an object
| |
note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety> note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
--> $DIR/object-safety.rs:9:14 --> $DIR/object-safety.rs:8:14
| |
LL | trait Foo { LL | trait Foo {
| --- this trait cannot be made into an object... | --- this trait cannot be made into an object...
@ -22,6 +13,6 @@ LL | async fn foo(&self);
| ^^^ ...because method `foo` is `async` | ^^^ ...because method `foo` is `async`
= help: consider moving `foo` to another trait = help: consider moving `foo` to another trait
error: aborting due to previous error; 1 warning emitted error: aborting due to previous error
For more information about this error, try `rustc --explain E0038`. For more information about this error, try `rustc --explain E0038`.

View file

@ -1,20 +1,11 @@
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/object-safety.rs:5:12
|
LL | #![feature(async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
error[E0038]: the trait `Foo` cannot be made into an object error[E0038]: the trait `Foo` cannot be made into an object
--> $DIR/object-safety.rs:13:12 --> $DIR/object-safety.rs:12:12
| |
LL | let x: &dyn Foo = todo!(); LL | let x: &dyn Foo = todo!();
| ^^^^^^^^ `Foo` cannot be made into an object | ^^^^^^^^ `Foo` cannot be made into an object
| |
note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety> note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
--> $DIR/object-safety.rs:9:14 --> $DIR/object-safety.rs:8:14
| |
LL | trait Foo { LL | trait Foo {
| --- this trait cannot be made into an object... | --- this trait cannot be made into an object...
@ -22,6 +13,6 @@ LL | async fn foo(&self);
| ^^^ ...because method `foo` is `async` | ^^^ ...because method `foo` is `async`
= help: consider moving `foo` to another trait = help: consider moving `foo` to another trait
error: aborting due to previous error; 1 warning emitted error: aborting due to previous error
For more information about this error, try `rustc --explain E0038`. For more information about this error, try `rustc --explain E0038`.

View file

@ -3,7 +3,6 @@
// revisions: current next // revisions: current next
#![feature(async_fn_in_trait)] #![feature(async_fn_in_trait)]
//~^ WARN the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
trait Foo { trait Foo {
async fn foo(&self); async fn foo(&self);

View file

@ -1,14 +1,5 @@
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/return-type-suggestion.rs:5:12
|
LL | #![feature(async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
error[E0308]: mismatched types error[E0308]: mismatched types
--> $DIR/return-type-suggestion.rs:10:9 --> $DIR/return-type-suggestion.rs:9:9
| |
LL | Ok(()) LL | Ok(())
| ^^^^^^- help: consider using a semicolon here: `;` | ^^^^^^- help: consider using a semicolon here: `;`
@ -18,6 +9,6 @@ LL | Ok(())
= note: expected unit type `()` = note: expected unit type `()`
found enum `Result<(), _>` found enum `Result<(), _>`
error: aborting due to previous error; 1 warning emitted error: aborting due to previous error
For more information about this error, try `rustc --explain E0308`. For more information about this error, try `rustc --explain E0308`.

View file

@ -1,14 +1,5 @@
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/return-type-suggestion.rs:5:12
|
LL | #![feature(async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
error[E0308]: mismatched types error[E0308]: mismatched types
--> $DIR/return-type-suggestion.rs:10:9 --> $DIR/return-type-suggestion.rs:9:9
| |
LL | Ok(()) LL | Ok(())
| ^^^^^^- help: consider using a semicolon here: `;` | ^^^^^^- help: consider using a semicolon here: `;`
@ -18,6 +9,6 @@ LL | Ok(())
= note: expected unit type `()` = note: expected unit type `()`
found enum `Result<(), _>` found enum `Result<(), _>`
error: aborting due to previous error; 1 warning emitted error: aborting due to previous error
For more information about this error, try `rustc --explain E0308`. For more information about this error, try `rustc --explain E0308`.

View file

@ -3,7 +3,6 @@
// revisions: current next // revisions: current next
#![feature(async_fn_in_trait)] #![feature(async_fn_in_trait)]
//~^ WARN the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
trait A { trait A {
async fn e() { async fn e() {

View file

@ -7,14 +7,6 @@ LL | #![feature(return_type_notation)]
= note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information = note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information
= note: `#[warn(incomplete_features)]` on by default = note: `#[warn(incomplete_features)]` on by default
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/issue-110963-early.rs:5:12
|
LL | #![feature(async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
error: higher-ranked lifetime error error: higher-ranked lifetime error
--> $DIR/issue-110963-early.rs:15:5 --> $DIR/issue-110963-early.rs:15:5
| |
@ -41,5 +33,5 @@ LL | | });
| |
= note: could not prove `[async block@$DIR/issue-110963-early.rs:15:11: 20:6]: Send` = note: could not prove `[async block@$DIR/issue-110963-early.rs:15:11: 20:6]: Send`
error: aborting due to 2 previous errors; 2 warnings emitted error: aborting due to 2 previous errors; 1 warning emitted

View file

@ -4,7 +4,6 @@
#![feature(return_type_notation)] #![feature(return_type_notation)]
//~^ WARN the feature `return_type_notation` is incomplete //~^ WARN the feature `return_type_notation` is incomplete
#![feature(async_fn_in_trait)] #![feature(async_fn_in_trait)]
//~^ WARN the feature `async_fn_in_trait` is incomplete
trait HealthCheck { trait HealthCheck {
async fn check(&mut self) -> bool; async fn check(&mut self) -> bool;

View file

@ -7,13 +7,5 @@ LL | #![feature(return_type_notation)]
= note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information = note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information
= note: `#[warn(incomplete_features)]` on by default = note: `#[warn(incomplete_features)]` on by default
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes warning: 1 warning emitted
--> $DIR/issue-110963-late.rs:6:12
|
LL | #![feature(async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
warning: 2 warnings emitted

View file

@ -1,5 +1,5 @@
error[E0658]: return type notation is experimental error[E0658]: return type notation is experimental
--> $DIR/feature-gate-return_type_notation.rs:15:17 --> $DIR/feature-gate-return_type_notation.rs:14:17
| |
LL | fn foo<T: Trait<m(): Send>>() {} LL | fn foo<T: Trait<m(): Send>>() {}
| ^^^^^^^^^ | ^^^^^^^^^
@ -7,17 +7,8 @@ LL | fn foo<T: Trait<m(): Send>>() {}
= note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information = note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information
= help: add `#![feature(return_type_notation)]` to the crate attributes to enable = help: add `#![feature(return_type_notation)]` to the crate attributes to enable
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/feature-gate-return_type_notation.rs:7:12
|
LL | #![feature(async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
error: parenthesized generic arguments cannot be used in associated type constraints error: parenthesized generic arguments cannot be used in associated type constraints
--> $DIR/feature-gate-return_type_notation.rs:15:17 --> $DIR/feature-gate-return_type_notation.rs:14:17
| |
LL | fn foo<T: Trait<m(): Send>>() {} LL | fn foo<T: Trait<m(): Send>>() {}
| ^-- | ^--
@ -25,12 +16,12 @@ LL | fn foo<T: Trait<m(): Send>>() {}
| help: remove these parentheses | help: remove these parentheses
error[E0220]: associated type `m` not found for `Trait` error[E0220]: associated type `m` not found for `Trait`
--> $DIR/feature-gate-return_type_notation.rs:15:17 --> $DIR/feature-gate-return_type_notation.rs:14:17
| |
LL | fn foo<T: Trait<m(): Send>>() {} LL | fn foo<T: Trait<m(): Send>>() {}
| ^ associated type `m` not found | ^ associated type `m` not found
error: aborting due to 3 previous errors; 1 warning emitted error: aborting due to 3 previous errors
Some errors have detailed explanations: E0220, E0658. Some errors have detailed explanations: E0220, E0658.
For more information about an error, try `rustc --explain E0220`. For more information about an error, try `rustc --explain E0220`.

View file

@ -1,14 +1,5 @@
warning: the feature `async_fn_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/feature-gate-return_type_notation.rs:7:12
|
LL | #![feature(async_fn_in_trait)]
| ^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
warning: return type notation is experimental warning: return type notation is experimental
--> $DIR/feature-gate-return_type_notation.rs:15:17 --> $DIR/feature-gate-return_type_notation.rs:14:17
| |
LL | fn foo<T: Trait<m(): Send>>() {} LL | fn foo<T: Trait<m(): Send>>() {}
| ^^^^^^^^^ | ^^^^^^^^^
@ -18,5 +9,5 @@ LL | fn foo<T: Trait<m(): Send>>() {}
= warning: unstable syntax can change at any point in the future, causing a hard error! = warning: unstable syntax can change at any point in the future, causing a hard error!
= note: for more information, see issue #65860 <https://github.com/rust-lang/rust/issues/65860> = note: for more information, see issue #65860 <https://github.com/rust-lang/rust/issues/65860>
warning: 2 warnings emitted warning: 1 warning emitted

View file

@ -5,7 +5,6 @@
// Since we're not adding new syntax, `cfg`'d out RTN must pass. // Since we're not adding new syntax, `cfg`'d out RTN must pass.
#![feature(async_fn_in_trait)] #![feature(async_fn_in_trait)]
//~^ WARN the feature `async_fn_in_trait` is incomplete
trait Trait { trait Trait {
async fn m(); async fn m();

View file

@ -1,11 +0,0 @@
warning: the feature `return_position_impl_trait_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/box-coerce-span-in-default.rs:5:12
|
LL | #![feature(return_position_impl_trait_in_trait)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
warning: 1 warning emitted

View file

@ -1,11 +0,0 @@
warning: the feature `return_position_impl_trait_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/box-coerce-span-in-default.rs:5:12
|
LL | #![feature(return_position_impl_trait_in_trait)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
warning: 1 warning emitted

View file

@ -3,7 +3,6 @@
// revisions: current next // revisions: current next
#![feature(return_position_impl_trait_in_trait)] #![feature(return_position_impl_trait_in_trait)]
//~^ WARN the feature `return_position_impl_trait_in_trait` is incomplete
struct TestA {} struct TestA {}
struct TestB {} struct TestB {}

View file

@ -1,11 +0,0 @@
warning: the feature `return_position_impl_trait_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/default-method-binder-shifting.rs:5:12
|
LL | #![feature(return_position_impl_trait_in_trait)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
warning: 1 warning emitted

View file

@ -1,11 +0,0 @@
warning: the feature `return_position_impl_trait_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/default-method-binder-shifting.rs:5:12
|
LL | #![feature(return_position_impl_trait_in_trait)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
warning: 1 warning emitted

View file

@ -3,7 +3,6 @@
// revisions: current next // revisions: current next
#![feature(return_position_impl_trait_in_trait)] #![feature(return_position_impl_trait_in_trait)]
//~^ WARN the feature `return_position_impl_trait_in_trait` is incomplete
trait Trait { trait Trait {
type Type; type Type;

View file

@ -1,11 +0,0 @@
warning: the feature `return_position_impl_trait_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/default-method-constraint.rs:7:12
|
LL | #![feature(return_position_impl_trait_in_trait)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
warning: 1 warning emitted

View file

@ -1,11 +0,0 @@
warning: the feature `return_position_impl_trait_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/default-method-constraint.rs:7:12
|
LL | #![feature(return_position_impl_trait_in_trait)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
warning: 1 warning emitted

View file

@ -5,7 +5,6 @@
// This didn't work in the previous default RPITIT method hack attempt // This didn't work in the previous default RPITIT method hack attempt
#![feature(return_position_impl_trait_in_trait)] #![feature(return_position_impl_trait_in_trait)]
//~^ WARN the feature `return_position_impl_trait_in_trait` is incomplete
trait Foo { trait Foo {
fn bar(x: bool) -> impl Sized { fn bar(x: bool) -> impl Sized {

View file

@ -1,14 +1,5 @@
warning: the feature `return_position_impl_trait_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/dont-project-to-rpitit-with-no-value.rs:4:12
|
LL | #![feature(return_position_impl_trait_in_trait)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
error[E0046]: not all trait items implemented, missing: `foo` error[E0046]: not all trait items implemented, missing: `foo`
--> $DIR/dont-project-to-rpitit-with-no-value.rs:12:1 --> $DIR/dont-project-to-rpitit-with-no-value.rs:11:1
| |
LL | fn foo(&self) -> impl Sized; LL | fn foo(&self) -> impl Sized;
| ---------------------------- `foo` from trait | ---------------------------- `foo` from trait
@ -16,6 +7,6 @@ LL | fn foo(&self) -> impl Sized;
LL | impl MyTrait for i32 { LL | impl MyTrait for i32 {
| ^^^^^^^^^^^^^^^^^^^^ missing `foo` in implementation | ^^^^^^^^^^^^^^^^^^^^ missing `foo` in implementation
error: aborting due to previous error; 1 warning emitted error: aborting due to previous error
For more information about this error, try `rustc --explain E0046`. For more information about this error, try `rustc --explain E0046`.

View file

@ -1,14 +1,5 @@
warning: the feature `return_position_impl_trait_in_trait` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/dont-project-to-rpitit-with-no-value.rs:4:12
|
LL | #![feature(return_position_impl_trait_in_trait)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #91611 <https://github.com/rust-lang/rust/issues/91611> for more information
= note: `#[warn(incomplete_features)]` on by default
error[E0046]: not all trait items implemented, missing: `foo` error[E0046]: not all trait items implemented, missing: `foo`
--> $DIR/dont-project-to-rpitit-with-no-value.rs:12:1 --> $DIR/dont-project-to-rpitit-with-no-value.rs:11:1
| |
LL | fn foo(&self) -> impl Sized; LL | fn foo(&self) -> impl Sized;
| ---------------------------- `foo` from trait | ---------------------------- `foo` from trait
@ -16,6 +7,6 @@ LL | fn foo(&self) -> impl Sized;
LL | impl MyTrait for i32 { LL | impl MyTrait for i32 {
| ^^^^^^^^^^^^^^^^^^^^ missing `foo` in implementation | ^^^^^^^^^^^^^^^^^^^^ missing `foo` in implementation
error: aborting due to previous error; 1 warning emitted error: aborting due to previous error
For more information about this error, try `rustc --explain E0046`. For more information about this error, try `rustc --explain E0046`.

View file

@ -2,7 +2,6 @@
// revisions: current next // revisions: current next
#![feature(return_position_impl_trait_in_trait)] #![feature(return_position_impl_trait_in_trait)]
//~^ WARN the feature `return_position_impl_trait_in_trait` is incomplete
trait MyTrait { trait MyTrait {
fn foo(&self) -> impl Sized; fn foo(&self) -> impl Sized;