mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-29 00:00:11 +02:00
@@ -1,5 +1,5 @@
|
|||||||
error: The default runtime flavor is `multi_thread`, but the `rt-multi-thread` feature is disabled.
|
error: The default runtime flavor is `multi_thread`, but the `rt-multi-thread` feature is disabled.
|
||||||
--> $DIR/macros_core_no_default.rs:3:1
|
--> tests/fail/macros_core_no_default.rs:3:1
|
||||||
|
|
|
|
||||||
3 | #[tokio::main]
|
3 | #[tokio::main]
|
||||||
| ^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
error: function is never used: `f`
|
error: function is never used: `f`
|
||||||
--> $DIR/macros_dead_code.rs:6:10
|
--> tests/fail/macros_dead_code.rs:6:10
|
||||||
|
|
|
|
||||||
6 | async fn f() {}
|
6 | async fn f() {}
|
||||||
| ^
|
| ^
|
||||||
|
|
|
|
||||||
note: the lint level is defined here
|
note: the lint level is defined here
|
||||||
--> $DIR/macros_dead_code.rs:1:9
|
--> tests/fail/macros_dead_code.rs:1:9
|
||||||
|
|
|
|
||||||
1 | #![deny(dead_code)]
|
1 | #![deny(dead_code)]
|
||||||
| ^^^^^^^^^
|
| ^^^^^^^^^
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
#![deny(duplicate_macro_attributes)]
|
||||||
|
|
||||||
use tests_build::tokio;
|
use tests_build::tokio;
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
|
|||||||
@@ -1,97 +1,101 @@
|
|||||||
error: the `async` keyword is missing from the function declaration
|
error: the `async` keyword is missing from the function declaration
|
||||||
--> $DIR/macros_invalid_input.rs:4:1
|
--> tests/fail/macros_invalid_input.rs:6:1
|
||||||
|
|
|
|
||||||
4 | fn main_is_not_async() {}
|
6 | fn main_is_not_async() {}
|
||||||
| ^^
|
| ^^
|
||||||
|
|
||||||
error: Unknown attribute foo is specified; expected one of: `flavor`, `worker_threads`, `start_paused`, `crate`
|
error: Unknown attribute foo is specified; expected one of: `flavor`, `worker_threads`, `start_paused`, `crate`
|
||||||
--> $DIR/macros_invalid_input.rs:6:15
|
--> tests/fail/macros_invalid_input.rs:8:15
|
||||||
|
|
|
|
||||||
6 | #[tokio::main(foo)]
|
8 | #[tokio::main(foo)]
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|
||||||
error: Must have specified ident
|
error: Must have specified ident
|
||||||
--> $DIR/macros_invalid_input.rs:9:15
|
--> tests/fail/macros_invalid_input.rs:11:15
|
||||||
|
|
|
|
||||||
9 | #[tokio::main(threadpool::bar)]
|
11 | #[tokio::main(threadpool::bar)]
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: the `async` keyword is missing from the function declaration
|
error: the `async` keyword is missing from the function declaration
|
||||||
--> $DIR/macros_invalid_input.rs:13:1
|
--> tests/fail/macros_invalid_input.rs:15:1
|
||||||
|
|
|
|
||||||
13 | fn test_is_not_async() {}
|
15 | fn test_is_not_async() {}
|
||||||
| ^^
|
| ^^
|
||||||
|
|
||||||
error: Unknown attribute foo is specified; expected one of: `flavor`, `worker_threads`, `start_paused`, `crate`
|
error: Unknown attribute foo is specified; expected one of: `flavor`, `worker_threads`, `start_paused`, `crate`
|
||||||
--> $DIR/macros_invalid_input.rs:15:15
|
--> tests/fail/macros_invalid_input.rs:17:15
|
||||||
|
|
|
|
||||||
15 | #[tokio::test(foo)]
|
17 | #[tokio::test(foo)]
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|
||||||
error: Unknown attribute foo is specified; expected one of: `flavor`, `worker_threads`, `start_paused`, `crate`
|
error: Unknown attribute foo is specified; expected one of: `flavor`, `worker_threads`, `start_paused`, `crate`
|
||||||
--> $DIR/macros_invalid_input.rs:18:15
|
--> tests/fail/macros_invalid_input.rs:20:15
|
||||||
|
|
|
|
||||||
18 | #[tokio::test(foo = 123)]
|
20 | #[tokio::test(foo = 123)]
|
||||||
| ^^^^^^^^^
|
| ^^^^^^^^^
|
||||||
|
|
||||||
error: Failed to parse value of `flavor` as string.
|
error: Failed to parse value of `flavor` as string.
|
||||||
--> $DIR/macros_invalid_input.rs:21:24
|
--> tests/fail/macros_invalid_input.rs:23:24
|
||||||
|
|
|
|
||||||
21 | #[tokio::test(flavor = 123)]
|
23 | #[tokio::test(flavor = 123)]
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|
||||||
error: No such runtime flavor `foo`. The runtime flavors are `current_thread` and `multi_thread`.
|
error: No such runtime flavor `foo`. The runtime flavors are `current_thread` and `multi_thread`.
|
||||||
--> $DIR/macros_invalid_input.rs:24:24
|
--> tests/fail/macros_invalid_input.rs:26:24
|
||||||
|
|
|
|
||||||
24 | #[tokio::test(flavor = "foo")]
|
26 | #[tokio::test(flavor = "foo")]
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
|
||||||
error: The `start_paused` option requires the `current_thread` runtime flavor. Use `#[tokio::test(flavor = "current_thread")]`
|
error: The `start_paused` option requires the `current_thread` runtime flavor. Use `#[tokio::test(flavor = "current_thread")]`
|
||||||
--> $DIR/macros_invalid_input.rs:27:55
|
--> tests/fail/macros_invalid_input.rs:29:55
|
||||||
|
|
|
|
||||||
27 | #[tokio::test(flavor = "multi_thread", start_paused = false)]
|
29 | #[tokio::test(flavor = "multi_thread", start_paused = false)]
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
|
||||||
error: Failed to parse value of `worker_threads` as integer.
|
error: Failed to parse value of `worker_threads` as integer.
|
||||||
--> $DIR/macros_invalid_input.rs:30:57
|
--> tests/fail/macros_invalid_input.rs:32:57
|
||||||
|
|
|
|
||||||
30 | #[tokio::test(flavor = "multi_thread", worker_threads = "foo")]
|
32 | #[tokio::test(flavor = "multi_thread", worker_threads = "foo")]
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
|
||||||
error: The `worker_threads` option requires the `multi_thread` runtime flavor. Use `#[tokio::test(flavor = "multi_thread")]`
|
error: The `worker_threads` option requires the `multi_thread` runtime flavor. Use `#[tokio::test(flavor = "multi_thread")]`
|
||||||
--> $DIR/macros_invalid_input.rs:33:59
|
--> tests/fail/macros_invalid_input.rs:35:59
|
||||||
|
|
|
|
||||||
33 | #[tokio::test(flavor = "current_thread", worker_threads = 4)]
|
35 | #[tokio::test(flavor = "current_thread", worker_threads = 4)]
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error: Failed to parse value of `crate` as ident.
|
error: Failed to parse value of `crate` as ident.
|
||||||
--> $DIR/macros_invalid_input.rs:36:23
|
--> tests/fail/macros_invalid_input.rs:38:23
|
||||||
|
|
|
|
||||||
36 | #[tokio::test(crate = 456)]
|
38 | #[tokio::test(crate = 456)]
|
||||||
| ^^^
|
| ^^^
|
||||||
|
|
||||||
error: Failed to parse value of `crate` as ident: "456"
|
error: Failed to parse value of `crate` as ident: "456"
|
||||||
--> $DIR/macros_invalid_input.rs:39:23
|
--> tests/fail/macros_invalid_input.rs:41:23
|
||||||
|
|
|
|
||||||
39 | #[tokio::test(crate = "456")]
|
41 | #[tokio::test(crate = "456")]
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
|
||||||
error: Failed to parse value of `crate` as ident: "abc::edf"
|
error: Failed to parse value of `crate` as ident: "abc::edf"
|
||||||
--> $DIR/macros_invalid_input.rs:42:23
|
--> tests/fail/macros_invalid_input.rs:44:23
|
||||||
|
|
|
|
||||||
42 | #[tokio::test(crate = "abc::edf")]
|
44 | #[tokio::test(crate = "abc::edf")]
|
||||||
| ^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
error: second test attribute is supplied
|
error: second test attribute is supplied
|
||||||
--> $DIR/macros_invalid_input.rs:46:1
|
--> tests/fail/macros_invalid_input.rs:48:1
|
||||||
|
|
|
|
||||||
46 | #[test]
|
48 | #[test]
|
||||||
| ^^^^^^^
|
| ^^^^^^^
|
||||||
|
|
||||||
error: duplicated attribute
|
error: duplicated attribute
|
||||||
--> $DIR/macros_invalid_input.rs:46:1
|
--> tests/fail/macros_invalid_input.rs:48:1
|
||||||
|
|
|
|
||||||
46 | #[test]
|
48 | #[test]
|
||||||
| ^^^^^^^
|
| ^^^^^^^
|
||||||
|
|
|
|
||||||
= note: `-D duplicate-macro-attributes` implied by `-D warnings`
|
note: the lint level is defined here
|
||||||
|
--> tests/fail/macros_invalid_input.rs:1:9
|
||||||
|
|
|
||||||
|
1 | #![deny(duplicate_macro_attributes)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|||||||
@@ -23,4 +23,13 @@ async fn extra_semicolon() -> Result<(), ()> {
|
|||||||
Ok(());
|
Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://github.com/tokio-rs/tokio/issues/4635
|
||||||
|
#[allow(redundant_semicolons)]
|
||||||
|
#[rustfmt::skip]
|
||||||
|
#[tokio::main]
|
||||||
|
async fn issue_4635() {
|
||||||
|
return 1;
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|||||||
@@ -1,18 +1,16 @@
|
|||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/macros_type_mismatch.rs:5:5
|
--> tests/fail/macros_type_mismatch.rs:5:5
|
||||||
|
|
|
|
||||||
4 | async fn missing_semicolon_or_return_type() {
|
4 | async fn missing_semicolon_or_return_type() {
|
||||||
| - possibly return type missing here?
|
| - possibly return type missing here?
|
||||||
5 | Ok(())
|
5 | Ok(())
|
||||||
| ^^^^^^- help: consider using a semicolon here: `;`
|
| ^^^^^^ expected `()`, found enum `Result`
|
||||||
| |
|
|
||||||
| expected `()`, found enum `Result`
|
|
||||||
|
|
|
|
||||||
= note: expected unit type `()`
|
= note: expected unit type `()`
|
||||||
found enum `Result<(), _>`
|
found enum `Result<(), _>`
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/macros_type_mismatch.rs:10:5
|
--> tests/fail/macros_type_mismatch.rs:10:5
|
||||||
|
|
|
|
||||||
9 | async fn missing_return_type() {
|
9 | async fn missing_return_type() {
|
||||||
| - possibly return type missing here?
|
| - possibly return type missing here?
|
||||||
@@ -23,7 +21,7 @@ error[E0308]: mismatched types
|
|||||||
found enum `Result<(), _>`
|
found enum `Result<(), _>`
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/macros_type_mismatch.rs:23:5
|
--> tests/fail/macros_type_mismatch.rs:23:5
|
||||||
|
|
|
|
||||||
14 | async fn extra_semicolon() -> Result<(), ()> {
|
14 | async fn extra_semicolon() -> Result<(), ()> {
|
||||||
| -------------- expected `Result<(), ()>` because of return type
|
| -------------- expected `Result<(), ()>` because of return type
|
||||||
@@ -33,8 +31,18 @@ error[E0308]: mismatched types
|
|||||||
|
|
|
|
||||||
= note: expected enum `Result<(), ()>`
|
= note: expected enum `Result<(), ()>`
|
||||||
found unit type `()`
|
found unit type `()`
|
||||||
help: try adding an expression at the end of the block
|
help: try wrapping the expression in a variant of `Result`
|
||||||
|
|
|
|
||||||
23 ~ Ok(());;
|
23 | Ok(Ok(());)
|
||||||
24 + Ok(())
|
| +++ +
|
||||||
|
23 | Err(Ok(());)
|
||||||
|
| ++++ +
|
||||||
|
|
||||||
|
error[E0308]: mismatched types
|
||||||
|
--> tests/fail/macros_type_mismatch.rs:32:5
|
||||||
|
|
|
|
||||||
|
30 | async fn issue_4635() {
|
||||||
|
| - possibly return type missing here?
|
||||||
|
31 | return 1;
|
||||||
|
32 | ;
|
||||||
|
| ^ expected `()`, found integer
|
||||||
|
|||||||
@@ -383,29 +383,17 @@ fn parse_knobs(mut input: syn::ItemFn, is_test: bool, config: FinalConfig) -> To
|
|||||||
|
|
||||||
let body = &input.block;
|
let body = &input.block;
|
||||||
let brace_token = input.block.brace_token;
|
let brace_token = input.block.brace_token;
|
||||||
let (tail_return, tail_semicolon) = match body.stmts.last() {
|
|
||||||
Some(syn::Stmt::Semi(syn::Expr::Return(_), _)) => (quote! { return }, quote! { ; }),
|
|
||||||
Some(syn::Stmt::Semi(..)) | Some(syn::Stmt::Local(..)) | None => {
|
|
||||||
match &input.sig.output {
|
|
||||||
syn::ReturnType::Type(_, ty) if matches!(&**ty, syn::Type::Tuple(ty) if ty.elems.is_empty()) =>
|
|
||||||
{
|
|
||||||
(quote! {}, quote! { ; }) // unit
|
|
||||||
}
|
|
||||||
syn::ReturnType::Default => (quote! {}, quote! { ; }), // unit
|
|
||||||
syn::ReturnType::Type(..) => (quote! {}, quote! {}), // ! or another
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_ => (quote! {}, quote! {}),
|
|
||||||
};
|
|
||||||
input.block = syn::parse2(quote_spanned! {last_stmt_end_span=>
|
input.block = syn::parse2(quote_spanned! {last_stmt_end_span=>
|
||||||
{
|
{
|
||||||
let body = async #body;
|
let body = async #body;
|
||||||
#[allow(clippy::expect_used)]
|
#[allow(clippy::expect_used, clippy::diverging_sub_expression)]
|
||||||
#tail_return #rt
|
{
|
||||||
.enable_all()
|
return #rt
|
||||||
.build()
|
.enable_all()
|
||||||
.expect("Failed building the Runtime")
|
.build()
|
||||||
.block_on(body)#tail_semicolon
|
.expect("Failed building the Runtime")
|
||||||
|
.block_on(body);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.expect("Parsing failure");
|
.expect("Parsing failure");
|
||||||
|
|||||||
Reference in New Issue
Block a user