about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2023-05-01 05:15:45 +0000
committerMichael Goulet <michael@errs.io>2023-06-05 19:52:04 +0000
commitbbc536d3ac83ad0e3600af2d04701faed63ecd79 (patch)
treea9d22ca7605bed4e4955d7f0e94faccbc1a00ee6 /tests
parent408bbd040613f6776e0a7d05d582c81f4ddc189a (diff)
downloadrust-bbc536d3ac83ad0e3600af2d04701faed63ecd79.tar.gz
rust-bbc536d3ac83ad0e3600af2d04701faed63ecd79.zip
Emit an error when RTN is used with ty/ct params
Diffstat (limited to 'tests')
-rw-r--r--tests/ui/async-await/return-type-notation/ty-or-ct-params.rs20
-rw-r--r--tests/ui/async-await/return-type-notation/ty-or-ct-params.stderr29
2 files changed, 49 insertions, 0 deletions
diff --git a/tests/ui/async-await/return-type-notation/ty-or-ct-params.rs b/tests/ui/async-await/return-type-notation/ty-or-ct-params.rs
new file mode 100644
index 00000000000..7871a2fed03
--- /dev/null
+++ b/tests/ui/async-await/return-type-notation/ty-or-ct-params.rs
@@ -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() {}
diff --git a/tests/ui/async-await/return-type-notation/ty-or-ct-params.stderr b/tests/ui/async-await/return-type-notation/ty-or-ct-params.stderr
new file mode 100644
index 00000000000..76928c5d7a3
--- /dev/null
+++ b/tests/ui/async-await/return-type-notation/ty-or-ct-params.stderr
@@ -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
+