提交 98c71c36 编写于 作者: V varkor

Check async in trait methods

上级 93c4b1f4
......@@ -2068,6 +2068,9 @@ fn visit_trait_item(&mut self, ti: &'a ast::TraitItem) {
if block.is_none() {
self.check_abi(sig.header.abi, ti.span);
}
if sig.header.asyncness.node.is_async() {
gate_feature_post!(&self, async_await, ti.span, "async fn is unstable");
}
if sig.decl.c_variadic {
gate_feature_post!(&self, c_variadic, ti.span,
"C-variadic functions are unstable");
......
......@@ -8,6 +8,11 @@ impl S {
async fn foo() {} //~ ERROR async fn is unstable
}
trait T {
async fn foo(); //~ ERROR trait fns cannot be declared `async`
//~^ ERROR async fn is unstable
}
async fn foo() {} //~ ERROR async fn is unstable
fn main() {
......
error[E0706]: trait fns cannot be declared `async`
--> $DIR/feature-gate-async-await.rs:12:5
|
LL | async fn foo();
| ^^^^^^^^^^^^^^^
error[E0658]: async fn is unstable
--> $DIR/feature-gate-async-await.rs:8:5
|
......@@ -8,7 +14,16 @@ LL | async fn foo() {}
= help: add #![feature(async_await)] to the crate attributes to enable
error[E0658]: async fn is unstable
--> $DIR/feature-gate-async-await.rs:11:1
--> $DIR/feature-gate-async-await.rs:12:5
|
LL | async fn foo();
| ^^^^^^^^^^^^^^^
|
= note: for more information, see https://github.com/rust-lang/rust/issues/50547
= help: add #![feature(async_await)] to the crate attributes to enable
error[E0658]: async fn is unstable
--> $DIR/feature-gate-async-await.rs:16:1
|
LL | async fn foo() {}
| ^^^^^^^^^^^^^^^^^
......@@ -17,7 +32,7 @@ LL | async fn foo() {}
= help: add #![feature(async_await)] to the crate attributes to enable
error[E0658]: async blocks are unstable
--> $DIR/feature-gate-async-await.rs:14:13
--> $DIR/feature-gate-async-await.rs:19:13
|
LL | let _ = async {};
| ^^^^^^^^
......@@ -26,7 +41,7 @@ LL | let _ = async {};
= help: add #![feature(async_await)] to the crate attributes to enable
error[E0658]: async closures are unstable
--> $DIR/feature-gate-async-await.rs:15:13
--> $DIR/feature-gate-async-await.rs:20:13
|
LL | let _ = async || {};
| ^^^^^^^^^^^
......@@ -34,6 +49,7 @@ LL | let _ = async || {};
= note: for more information, see https://github.com/rust-lang/rust/issues/50547
= help: add #![feature(async_await)] to the crate attributes to enable
error: aborting due to 4 previous errors
error: aborting due to 6 previous errors
For more information about this error, try `rustc --explain E0658`.
Some errors occurred: E0658, E0706.
For more information about an error, try `rustc --explain E0658`.
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册