Emit an error when RTN is used with ty/ct params

This commit is contained in:
Michael Goulet 2023-05-01 05:15:45 +00:00
parent 408bbd0406
commit bbc536d3ac
5 changed files with 97 additions and 3 deletions

View file

@ -0,0 +1,20 @@
// edition: 2021
#![feature(async_fn_in_trait, return_type_notation)]
//~^ WARN the feature `return_type_notation` is incomplete
trait Foo {
async fn bar<T>() {}
async fn baz<const N: usize>() {}
}
fn test<T>()
where
T: Foo<bar(): Send, baz(): Send>,
//~^ ERROR return type notation is not allowed for functions that have const parameters
//~| ERROR return type notation is not allowed for functions that have type parameters
{
}
fn main() {}

View file

@ -0,0 +1,29 @@
warning: the feature `return_type_notation` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/ty-or-ct-params.rs:3:31
|
LL | #![feature(async_fn_in_trait, return_type_notation)]
| ^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #109417 <https://github.com/rust-lang/rust/issues/109417> for more information
= note: `#[warn(incomplete_features)]` on by default
error: return type notation is not allowed for functions that have type parameters
--> $DIR/ty-or-ct-params.rs:14:12
|
LL | async fn bar<T>() {}
| - type parameter declared here
...
LL | T: Foo<bar(): Send, baz(): Send>,
| ^^^^^^^^^^^
error: return type notation is not allowed for functions that have const parameters
--> $DIR/ty-or-ct-params.rs:14:25
|
LL | async fn baz<const N: usize>() {}
| -------------- const parameter declared here
...
LL | T: Foo<bar(): Send, baz(): Send>,
| ^^^^^^^^^^^
error: aborting due to 2 previous errors; 1 warning emitted