Deprecate E0706
This commit is contained in:
parent
59315b8a63
commit
ef04c9795b
4 changed files with 6 additions and 32 deletions
|
@ -136,12 +136,6 @@ ast_lowering_template_modifier = template modifier
|
||||||
|
|
||||||
ast_lowering_this_not_async = this is not `async`
|
ast_lowering_this_not_async = this is not `async`
|
||||||
|
|
||||||
ast_lowering_trait_fn_async =
|
|
||||||
functions in traits cannot be declared `async`
|
|
||||||
.label = `async` because of this
|
|
||||||
.note = `async` trait functions are not currently supported
|
|
||||||
.note2 = consider using the `async-trait` crate: https://crates.io/crates/async-trait
|
|
||||||
|
|
||||||
ast_lowering_underscore_expr_lhs_assign =
|
ast_lowering_underscore_expr_lhs_assign =
|
||||||
in expressions, `_` can only be used on the left-hand side of an assignment
|
in expressions, `_` can only be used on the left-hand side of an assignment
|
||||||
.label = `_` not allowed here
|
.label = `_` not allowed here
|
||||||
|
|
|
@ -354,17 +354,6 @@ pub struct InclusiveRangeWithNoEnd {
|
||||||
pub span: Span,
|
pub span: Span,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Diagnostic, Clone, Copy)]
|
|
||||||
#[diag(ast_lowering_trait_fn_async, code = "E0706")]
|
|
||||||
#[note]
|
|
||||||
#[note(ast_lowering_note2)]
|
|
||||||
pub struct TraitFnAsync {
|
|
||||||
#[primary_span]
|
|
||||||
pub fn_span: Span,
|
|
||||||
#[label]
|
|
||||||
pub span: Span,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Diagnostic)]
|
#[derive(Diagnostic)]
|
||||||
pub enum BadReturnTypeNotation {
|
pub enum BadReturnTypeNotation {
|
||||||
#[diag(ast_lowering_bad_return_type_notation_inputs)]
|
#[diag(ast_lowering_bad_return_type_notation_inputs)]
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate tracing;
|
extern crate tracing;
|
||||||
|
|
||||||
use crate::errors::{AssocTyParentheses, AssocTyParenthesesSub, MisplacedImplTrait, TraitFnAsync};
|
use crate::errors::{AssocTyParentheses, AssocTyParenthesesSub, MisplacedImplTrait};
|
||||||
|
|
||||||
use rustc_ast::ptr::P;
|
use rustc_ast::ptr::P;
|
||||||
use rustc_ast::visit;
|
use rustc_ast::visit;
|
||||||
|
@ -336,13 +336,6 @@ impl FnDeclKind {
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn async_fn_allowed(&self) -> bool {
|
|
||||||
match self {
|
|
||||||
FnDeclKind::Fn | FnDeclKind::Inherent | FnDeclKind::Impl | FnDeclKind::Trait => true,
|
|
||||||
_ => false,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone)]
|
#[derive(Copy, Clone)]
|
||||||
|
@ -1797,11 +1790,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
||||||
self.lower_ty_direct(¶m.ty, &itctx)
|
self.lower_ty_direct(¶m.ty, &itctx)
|
||||||
}));
|
}));
|
||||||
|
|
||||||
let output = if let Some((ret_id, span)) = make_ret_async {
|
let output = if let Some((ret_id, _span)) = make_ret_async {
|
||||||
if !kind.async_fn_allowed() {
|
|
||||||
self.tcx.sess.emit_err(TraitFnAsync { fn_span, span });
|
|
||||||
}
|
|
||||||
|
|
||||||
let fn_def_id = self.local_def_id(fn_node_id);
|
let fn_def_id = self.local_def_id(fn_node_id);
|
||||||
self.lower_async_fn_ret_ty(&decl.output, fn_def_id, ret_id, kind, fn_span)
|
self.lower_async_fn_ret_ty(&decl.output, fn_def_id, ret_id, kind, fn_span)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
|
#### Note: this error code is no longer emitted by the compiler.
|
||||||
|
|
||||||
`async fn`s are not yet supported in traits in Rust.
|
`async fn`s are not yet supported in traits in Rust.
|
||||||
|
|
||||||
Erroneous code example:
|
Erroneous code example:
|
||||||
|
|
||||||
```compile_fail,edition2018
|
```ignore,edition2018
|
||||||
trait T {
|
trait T {
|
||||||
// Neither case is currently supported.
|
// Neither case is currently supported.
|
||||||
async fn foo() {}
|
async fn foo() {}
|
||||||
|
@ -13,7 +15,7 @@ trait T {
|
||||||
`async fn`s return an `impl Future`, making the following two examples
|
`async fn`s return an `impl Future`, making the following two examples
|
||||||
equivalent:
|
equivalent:
|
||||||
|
|
||||||
```edition2018,ignore (example-of-desugaring-equivalence)
|
```ignore,edition2018 (example-of-desugaring-equivalence)
|
||||||
async fn foo() -> User {
|
async fn foo() -> User {
|
||||||
unimplemented!()
|
unimplemented!()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue