Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
def_collector, visit_fn: account for no body
- Loading branch information
Showing
3 changed files
with
88 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
20 changes: 20 additions & 0 deletions
20
src/test/ui/resolve/issue-70736-async-fn-no-body-def-collector.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
// edition:2018 | ||
|
||
async fn free(); //~ ERROR without a body | ||
|
||
struct A; | ||
impl A { | ||
async fn inherent(); //~ ERROR without body | ||
} | ||
|
||
trait B { | ||
async fn associated(); | ||
//~^ ERROR cannot be declared `async` | ||
} | ||
impl B for A { | ||
async fn associated(); //~ ERROR without body | ||
//~^ ERROR cannot be declared `async` | ||
//~| ERROR incompatible type for trait | ||
} | ||
|
||
fn main() {} |
65 changes: 65 additions & 0 deletions
65
src/test/ui/resolve/issue-70736-async-fn-no-body-def-collector.stderr
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
error: free function without a body | ||
--> $DIR/issue-70736-async-fn-no-body-def-collector.rs:3:1 | ||
| | ||
LL | async fn free(); | ||
| ^^^^^^^^^^^^^^^- | ||
| | | ||
| help: provide a definition for the function: `{ <body> }` | ||
|
||
error: associated function in `impl` without body | ||
--> $DIR/issue-70736-async-fn-no-body-def-collector.rs:7:5 | ||
| | ||
LL | async fn inherent(); | ||
| ^^^^^^^^^^^^^^^^^^^- | ||
| | | ||
| help: provide a definition for the function: `{ <body> }` | ||
|
||
error[E0706]: functions in traits cannot be declared `async` | ||
--> $DIR/issue-70736-async-fn-no-body-def-collector.rs:11:5 | ||
| | ||
LL | async fn associated(); | ||
| -----^^^^^^^^^^^^^^^^^ | ||
| | | ||
| `async` because of this | ||
| | ||
= note: `async` trait functions are not currently supported | ||
= note: consider using the `async-trait` crate: https://crates.io/crates/async-trait | ||
|
||
error: associated function in `impl` without body | ||
--> $DIR/issue-70736-async-fn-no-body-def-collector.rs:15:5 | ||
| | ||
LL | async fn associated(); | ||
| ^^^^^^^^^^^^^^^^^^^^^- | ||
| | | ||
| help: provide a definition for the function: `{ <body> }` | ||
|
||
error[E0706]: functions in traits cannot be declared `async` | ||
--> $DIR/issue-70736-async-fn-no-body-def-collector.rs:15:5 | ||
| | ||
LL | async fn associated(); | ||
| -----^^^^^^^^^^^^^^^^^ | ||
| | | ||
| `async` because of this | ||
| | ||
= note: `async` trait functions are not currently supported | ||
= note: consider using the `async-trait` crate: https://crates.io/crates/async-trait | ||
|
||
error[E0053]: method `associated` has an incompatible type for trait | ||
--> $DIR/issue-70736-async-fn-no-body-def-collector.rs:15:26 | ||
| | ||
LL | async fn associated(); | ||
| - type in trait | ||
... | ||
LL | async fn associated(); | ||
| ^ | ||
| | | ||
| the `Output` of this `async fn`'s found opaque type | ||
| expected `()`, found opaque type | ||
| | ||
= note: expected fn pointer `fn()` | ||
found fn pointer `fn() -> impl std::future::Future` | ||
|
||
error: aborting due to 6 previous errors | ||
|
||
Some errors have detailed explanations: E0053, E0706. | ||
For more information about an error, try `rustc --explain E0053`. |