Silence unnecessary await foo?
knock-down error
This commit is contained in:
parent
62ba365195
commit
3a0227bc49
@ -1207,7 +1207,13 @@ impl<'a> Parser<'a> {
|
|||||||
self.recover_await_prefix(await_sp)?
|
self.recover_await_prefix(await_sp)?
|
||||||
};
|
};
|
||||||
let sp = self.error_on_incorrect_await(lo, hi, &expr, is_question);
|
let sp = self.error_on_incorrect_await(lo, hi, &expr, is_question);
|
||||||
let expr = self.mk_expr(lo.to(sp), ExprKind::Await(expr), attrs);
|
let kind = match expr.kind {
|
||||||
|
// Avoid knock-down errors as we don't know whether to interpret this as `foo().await?`
|
||||||
|
// or `foo()?.await` (the very reason we went with postfix syntax 😅).
|
||||||
|
ExprKind::Try(_) => ExprKind::Err,
|
||||||
|
_ => ExprKind::Await(expr),
|
||||||
|
};
|
||||||
|
let expr = self.mk_expr(lo.to(sp), kind, attrs);
|
||||||
self.maybe_recover_from_bad_qpath(expr, true)
|
self.maybe_recover_from_bad_qpath(expr, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,6 @@ async fn foo2() -> Result<(), ()> {
|
|||||||
}
|
}
|
||||||
async fn foo3() -> Result<(), ()> {
|
async fn foo3() -> Result<(), ()> {
|
||||||
let _ = await bar()?; //~ ERROR incorrect use of `await`
|
let _ = await bar()?; //~ ERROR incorrect use of `await`
|
||||||
//~^ ERROR the `?` operator can only be applied to values that implement `Try`
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
async fn foo21() -> Result<(), ()> {
|
async fn foo21() -> Result<(), ()> {
|
||||||
@ -60,9 +59,7 @@ fn foo10() -> Result<(), ()> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
fn foo11() -> Result<(), ()> {
|
fn foo11() -> Result<(), ()> {
|
||||||
let _ = await bar()?; //~ ERROR `await` is only allowed inside `async` functions and blocks
|
let _ = await bar()?; //~ ERROR incorrect use of `await`
|
||||||
//~^ ERROR incorrect use of `await`
|
|
||||||
//~| ERROR the `?` operator can only be applied to values that implement `Try`
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
fn foo12() -> Result<(), ()> {
|
fn foo12() -> Result<(), ()> {
|
||||||
|
@ -17,103 +17,103 @@ LL | let _ = await bar()?;
|
|||||||
| ^^^^^^^^^^^^ help: `await` is a postfix operation: `bar()?.await`
|
| ^^^^^^^^^^^^ help: `await` is a postfix operation: `bar()?.await`
|
||||||
|
|
||||||
error: incorrect use of `await`
|
error: incorrect use of `await`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:21:13
|
--> $DIR/incorrect-syntax-suggestions.rs:20:13
|
||||||
|
|
|
|
||||||
LL | let _ = await { bar() };
|
LL | let _ = await { bar() };
|
||||||
| ^^^^^^^^^^^^^^^ help: `await` is a postfix operation: `{ bar() }.await`
|
| ^^^^^^^^^^^^^^^ help: `await` is a postfix operation: `{ bar() }.await`
|
||||||
|
|
||||||
error: incorrect use of `await`
|
error: incorrect use of `await`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:25:13
|
--> $DIR/incorrect-syntax-suggestions.rs:24:13
|
||||||
|
|
|
|
||||||
LL | let _ = await(bar());
|
LL | let _ = await(bar());
|
||||||
| ^^^^^^^^^^^^ help: `await` is a postfix operation: `(bar()).await`
|
| ^^^^^^^^^^^^ help: `await` is a postfix operation: `(bar()).await`
|
||||||
|
|
||||||
error: incorrect use of `await`
|
error: incorrect use of `await`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:29:13
|
--> $DIR/incorrect-syntax-suggestions.rs:28:13
|
||||||
|
|
|
|
||||||
LL | let _ = await { bar() }?;
|
LL | let _ = await { bar() }?;
|
||||||
| ^^^^^^^^^^^^^^^ help: `await` is a postfix operation: `{ bar() }.await`
|
| ^^^^^^^^^^^^^^^ help: `await` is a postfix operation: `{ bar() }.await`
|
||||||
|
|
||||||
error: incorrect use of `await`
|
error: incorrect use of `await`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:33:14
|
--> $DIR/incorrect-syntax-suggestions.rs:32:14
|
||||||
|
|
|
|
||||||
LL | let _ = (await bar())?;
|
LL | let _ = (await bar())?;
|
||||||
| ^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await`
|
| ^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await`
|
||||||
|
|
||||||
error: incorrect use of `await`
|
error: incorrect use of `await`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:37:24
|
--> $DIR/incorrect-syntax-suggestions.rs:36:24
|
||||||
|
|
|
|
||||||
LL | let _ = bar().await();
|
LL | let _ = bar().await();
|
||||||
| ^^ help: `await` is not a method call, remove the parentheses
|
| ^^ help: `await` is not a method call, remove the parentheses
|
||||||
|
|
||||||
error: incorrect use of `await`
|
error: incorrect use of `await`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:41:24
|
--> $DIR/incorrect-syntax-suggestions.rs:40:24
|
||||||
|
|
|
|
||||||
LL | let _ = bar().await()?;
|
LL | let _ = bar().await()?;
|
||||||
| ^^ help: `await` is not a method call, remove the parentheses
|
| ^^ help: `await` is not a method call, remove the parentheses
|
||||||
|
|
||||||
error: incorrect use of `await`
|
error: incorrect use of `await`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:53:13
|
--> $DIR/incorrect-syntax-suggestions.rs:52:13
|
||||||
|
|
|
|
||||||
LL | let _ = await bar();
|
LL | let _ = await bar();
|
||||||
| ^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await`
|
| ^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await`
|
||||||
|
|
||||||
error: incorrect use of `await`
|
error: incorrect use of `await`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:58:13
|
--> $DIR/incorrect-syntax-suggestions.rs:57:13
|
||||||
|
|
|
|
||||||
LL | let _ = await? bar();
|
LL | let _ = await? bar();
|
||||||
| ^^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await?`
|
| ^^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await?`
|
||||||
|
|
||||||
error: incorrect use of `await`
|
error: incorrect use of `await`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:63:13
|
--> $DIR/incorrect-syntax-suggestions.rs:62:13
|
||||||
|
|
|
|
||||||
LL | let _ = await bar()?;
|
LL | let _ = await bar()?;
|
||||||
| ^^^^^^^^^^^^ help: `await` is a postfix operation: `bar()?.await`
|
| ^^^^^^^^^^^^ help: `await` is a postfix operation: `bar()?.await`
|
||||||
|
|
||||||
error: incorrect use of `await`
|
error: incorrect use of `await`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:69:14
|
--> $DIR/incorrect-syntax-suggestions.rs:66:14
|
||||||
|
|
|
|
||||||
LL | let _ = (await bar())?;
|
LL | let _ = (await bar())?;
|
||||||
| ^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await`
|
| ^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await`
|
||||||
|
|
||||||
error: incorrect use of `await`
|
error: incorrect use of `await`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:74:24
|
--> $DIR/incorrect-syntax-suggestions.rs:71:24
|
||||||
|
|
|
|
||||||
LL | let _ = bar().await();
|
LL | let _ = bar().await();
|
||||||
| ^^ help: `await` is not a method call, remove the parentheses
|
| ^^ help: `await` is not a method call, remove the parentheses
|
||||||
|
|
||||||
error: incorrect use of `await`
|
error: incorrect use of `await`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:79:24
|
--> $DIR/incorrect-syntax-suggestions.rs:76:24
|
||||||
|
|
|
|
||||||
LL | let _ = bar().await()?;
|
LL | let _ = bar().await()?;
|
||||||
| ^^ help: `await` is not a method call, remove the parentheses
|
| ^^ help: `await` is not a method call, remove the parentheses
|
||||||
|
|
||||||
error: incorrect use of `await`
|
error: incorrect use of `await`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:107:13
|
--> $DIR/incorrect-syntax-suggestions.rs:104:13
|
||||||
|
|
|
|
||||||
LL | let _ = await!(bar());
|
LL | let _ = await!(bar());
|
||||||
| ^^^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await`
|
| ^^^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await`
|
||||||
|
|
||||||
error: incorrect use of `await`
|
error: incorrect use of `await`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:111:13
|
--> $DIR/incorrect-syntax-suggestions.rs:108:13
|
||||||
|
|
|
|
||||||
LL | let _ = await!(bar())?;
|
LL | let _ = await!(bar())?;
|
||||||
| ^^^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await`
|
| ^^^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await`
|
||||||
|
|
||||||
error: incorrect use of `await`
|
error: incorrect use of `await`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:116:17
|
--> $DIR/incorrect-syntax-suggestions.rs:113:17
|
||||||
|
|
|
|
||||||
LL | let _ = await!(bar())?;
|
LL | let _ = await!(bar())?;
|
||||||
| ^^^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await`
|
| ^^^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await`
|
||||||
|
|
||||||
error: incorrect use of `await`
|
error: incorrect use of `await`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:124:17
|
--> $DIR/incorrect-syntax-suggestions.rs:121:17
|
||||||
|
|
|
|
||||||
LL | let _ = await!(bar())?;
|
LL | let _ = await!(bar())?;
|
||||||
| ^^^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await`
|
| ^^^^^^^^^^^^^ help: `await` is a postfix operation: `bar().await`
|
||||||
|
|
||||||
error: expected expression, found `=>`
|
error: expected expression, found `=>`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:132:25
|
--> $DIR/incorrect-syntax-suggestions.rs:129:25
|
||||||
|
|
|
|
||||||
LL | match await { await => () }
|
LL | match await { await => () }
|
||||||
| ----- ^^ expected expression
|
| ----- ^^ expected expression
|
||||||
@ -121,13 +121,13 @@ LL | match await { await => () }
|
|||||||
| while parsing this incorrect await expression
|
| while parsing this incorrect await expression
|
||||||
|
|
||||||
error: incorrect use of `await`
|
error: incorrect use of `await`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:132:11
|
--> $DIR/incorrect-syntax-suggestions.rs:129:11
|
||||||
|
|
|
|
||||||
LL | match await { await => () }
|
LL | match await { await => () }
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ help: `await` is a postfix operation: `{ await => () }.await`
|
| ^^^^^^^^^^^^^^^^^^^^^ help: `await` is a postfix operation: `{ await => () }.await`
|
||||||
|
|
||||||
error: expected one of `.`, `?`, `{`, or an operator, found `}`
|
error: expected one of `.`, `?`, `{`, or an operator, found `}`
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:135:1
|
--> $DIR/incorrect-syntax-suggestions.rs:132:1
|
||||||
|
|
|
|
||||||
LL | match await { await => () }
|
LL | match await { await => () }
|
||||||
| ----- - expected one of `.`, `?`, `{`, or an operator
|
| ----- - expected one of `.`, `?`, `{`, or an operator
|
||||||
@ -138,7 +138,7 @@ LL | }
|
|||||||
| ^ unexpected token
|
| ^ unexpected token
|
||||||
|
|
||||||
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:53:13
|
--> $DIR/incorrect-syntax-suggestions.rs:52:13
|
||||||
|
|
|
|
||||||
LL | fn foo9() -> Result<(), ()> {
|
LL | fn foo9() -> Result<(), ()> {
|
||||||
| ---- this is not `async`
|
| ---- this is not `async`
|
||||||
@ -146,7 +146,7 @@ LL | let _ = await bar();
|
|||||||
| ^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
| ^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
||||||
|
|
||||||
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:58:13
|
--> $DIR/incorrect-syntax-suggestions.rs:57:13
|
||||||
|
|
|
|
||||||
LL | fn foo10() -> Result<(), ()> {
|
LL | fn foo10() -> Result<(), ()> {
|
||||||
| ----- this is not `async`
|
| ----- this is not `async`
|
||||||
@ -154,15 +154,7 @@ LL | let _ = await? bar();
|
|||||||
| ^^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
| ^^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
||||||
|
|
||||||
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:63:13
|
--> $DIR/incorrect-syntax-suggestions.rs:66:14
|
||||||
|
|
|
||||||
LL | fn foo11() -> Result<(), ()> {
|
|
||||||
| ----- this is not `async`
|
|
||||||
LL | let _ = await bar()?;
|
|
||||||
| ^^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
|
||||||
|
|
||||||
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:69:14
|
|
||||||
|
|
|
|
||||||
LL | fn foo12() -> Result<(), ()> {
|
LL | fn foo12() -> Result<(), ()> {
|
||||||
| ----- this is not `async`
|
| ----- this is not `async`
|
||||||
@ -170,7 +162,7 @@ LL | let _ = (await bar())?;
|
|||||||
| ^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
| ^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
||||||
|
|
||||||
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:74:13
|
--> $DIR/incorrect-syntax-suggestions.rs:71:13
|
||||||
|
|
|
|
||||||
LL | fn foo13() -> Result<(), ()> {
|
LL | fn foo13() -> Result<(), ()> {
|
||||||
| ----- this is not `async`
|
| ----- this is not `async`
|
||||||
@ -178,7 +170,7 @@ LL | let _ = bar().await();
|
|||||||
| ^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
| ^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
||||||
|
|
||||||
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:79:13
|
--> $DIR/incorrect-syntax-suggestions.rs:76:13
|
||||||
|
|
|
|
||||||
LL | fn foo14() -> Result<(), ()> {
|
LL | fn foo14() -> Result<(), ()> {
|
||||||
| ----- this is not `async`
|
| ----- this is not `async`
|
||||||
@ -186,7 +178,7 @@ LL | let _ = bar().await()?;
|
|||||||
| ^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
| ^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
||||||
|
|
||||||
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:84:13
|
--> $DIR/incorrect-syntax-suggestions.rs:81:13
|
||||||
|
|
|
|
||||||
LL | fn foo15() -> Result<(), ()> {
|
LL | fn foo15() -> Result<(), ()> {
|
||||||
| ----- this is not `async`
|
| ----- this is not `async`
|
||||||
@ -194,7 +186,7 @@ LL | let _ = bar().await;
|
|||||||
| ^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
| ^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
||||||
|
|
||||||
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:88:13
|
--> $DIR/incorrect-syntax-suggestions.rs:85:13
|
||||||
|
|
|
|
||||||
LL | fn foo16() -> Result<(), ()> {
|
LL | fn foo16() -> Result<(), ()> {
|
||||||
| ----- this is not `async`
|
| ----- this is not `async`
|
||||||
@ -202,7 +194,7 @@ LL | let _ = bar().await?;
|
|||||||
| ^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
| ^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
||||||
|
|
||||||
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:93:17
|
--> $DIR/incorrect-syntax-suggestions.rs:90:17
|
||||||
|
|
|
|
||||||
LL | fn foo() -> Result<(), ()> {
|
LL | fn foo() -> Result<(), ()> {
|
||||||
| --- this is not `async`
|
| --- this is not `async`
|
||||||
@ -210,7 +202,7 @@ LL | let _ = bar().await?;
|
|||||||
| ^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
| ^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
||||||
|
|
||||||
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:100:17
|
--> $DIR/incorrect-syntax-suggestions.rs:97:17
|
||||||
|
|
|
|
||||||
LL | let foo = || {
|
LL | let foo = || {
|
||||||
| -- this is not `async`
|
| -- this is not `async`
|
||||||
@ -218,7 +210,7 @@ LL | let _ = bar().await?;
|
|||||||
| ^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
| ^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
||||||
|
|
||||||
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:116:17
|
--> $DIR/incorrect-syntax-suggestions.rs:113:17
|
||||||
|
|
|
|
||||||
LL | fn foo() -> Result<(), ()> {
|
LL | fn foo() -> Result<(), ()> {
|
||||||
| --- this is not `async`
|
| --- this is not `async`
|
||||||
@ -226,36 +218,13 @@ LL | let _ = await!(bar())?;
|
|||||||
| ^^^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
| ^^^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
||||||
|
|
||||||
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:124:17
|
--> $DIR/incorrect-syntax-suggestions.rs:121:17
|
||||||
|
|
|
|
||||||
LL | let foo = || {
|
LL | let foo = || {
|
||||||
| -- this is not `async`
|
| -- this is not `async`
|
||||||
LL | let _ = await!(bar())?;
|
LL | let _ = await!(bar())?;
|
||||||
| ^^^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
| ^^^^^^^^^^^^^ only allowed inside `async` functions and blocks
|
||||||
|
|
||||||
error[E0277]: the `?` operator can only be applied to values that implement `Try`
|
error: aborting due to 33 previous errors
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:16:19
|
|
||||||
|
|
|
||||||
LL | let _ = await bar()?;
|
|
||||||
| ^^^^^^ the `?` operator cannot be applied to type `impl Future`
|
|
||||||
|
|
|
||||||
= help: the trait `Try` is not implemented for `impl Future`
|
|
||||||
= note: required by `into_result`
|
|
||||||
help: consider `await`ing on the `Future`
|
|
||||||
|
|
|
||||||
LL | let _ = await bar().await?;
|
|
||||||
| ^^^^^^
|
|
||||||
|
|
||||||
error[E0277]: the `?` operator can only be applied to values that implement `Try`
|
For more information about this error, try `rustc --explain E0728`.
|
||||||
--> $DIR/incorrect-syntax-suggestions.rs:63:19
|
|
||||||
|
|
|
||||||
LL | let _ = await bar()?;
|
|
||||||
| ^^^^^^ the `?` operator cannot be applied to type `impl Future`
|
|
||||||
|
|
|
||||||
= help: the trait `Try` is not implemented for `impl Future`
|
|
||||||
= note: required by `into_result`
|
|
||||||
|
|
||||||
error: aborting due to 36 previous errors
|
|
||||||
|
|
||||||
Some errors have detailed explanations: E0277, E0728.
|
|
||||||
For more information about an error, try `rustc --explain E0277`.
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user