Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Parse alternative incorrect uses of await and recover
- Loading branch information
Showing
12 changed files
with
428 additions
and
37 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
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
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
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
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
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
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,93 @@ | ||
// edition:2018 | ||
|
||
#![feature(async_await)] | ||
|
||
async fn bar() -> Result<(), ()> { | ||
Ok(()) | ||
} | ||
|
||
async fn foo1() -> Result<(), ()> { | ||
let _ = await bar(); //~ ERROR incorrect use of `await` | ||
Ok(()) | ||
} | ||
async fn foo2() -> Result<(), ()> { | ||
let _ = await? bar(); //~ ERROR incorrect use of `await` | ||
Ok(()) | ||
} | ||
async fn foo3() -> Result<(), ()> { | ||
let _ = await bar()?; //~ ERROR incorrect use of `await` | ||
//~^ ERROR the `?` operator can only be applied to values that implement `std::ops::Try` | ||
Ok(()) | ||
} | ||
async fn foo21() -> Result<(), ()> { | ||
let _ = await { bar() }; //~ ERROR incorrect use of `await` | ||
Ok(()) | ||
} | ||
async fn foo22() -> Result<(), ()> { | ||
let _ = await(bar()); //~ ERROR incorrect use of `await` | ||
Ok(()) | ||
} | ||
async fn foo23() -> Result<(), ()> { | ||
let _ = await { bar() }?; //~ ERROR incorrect use of `await` | ||
Ok(()) | ||
} | ||
async fn foo4() -> Result<(), ()> { | ||
let _ = (await bar())?; //~ ERROR incorrect use of `await` | ||
Ok(()) | ||
} | ||
async fn foo5() -> Result<(), ()> { | ||
let _ = bar().await(); //~ ERROR incorrect use of `await` | ||
Ok(()) | ||
} | ||
async fn foo6() -> Result<(), ()> { | ||
let _ = bar().await()?; //~ ERROR incorrect use of `await` | ||
Ok(()) | ||
} | ||
async fn foo7() -> Result<(), ()> { | ||
let _ = bar().await; // OK | ||
Ok(()) | ||
} | ||
async fn foo8() -> Result<(), ()> { | ||
let _ = bar().await?; // OK | ||
Ok(()) | ||
} | ||
fn foo9() -> Result<(), ()> { | ||
let _ = await bar(); //~ ERROR `await` is only allowed inside `async` functions and blocks | ||
//~^ ERROR incorrect use of `await` | ||
Ok(()) | ||
} | ||
fn foo10() -> Result<(), ()> { | ||
let _ = await? bar(); //~ ERROR `await` is only allowed inside `async` functions and blocks | ||
//~^ ERROR incorrect use of `await` | ||
Ok(()) | ||
} | ||
fn foo11() -> Result<(), ()> { | ||
let _ = await bar()?; //~ ERROR `await` is only allowed inside `async` functions and blocks | ||
//~^ ERROR incorrect use of `await` | ||
Ok(()) | ||
} | ||
fn foo12() -> Result<(), ()> { | ||
let _ = (await bar())?; //~ ERROR `await` is only allowed inside `async` functions and blocks | ||
//~^ ERROR incorrect use of `await` | ||
Ok(()) | ||
} | ||
fn foo13() -> Result<(), ()> { | ||
let _ = bar().await(); //~ ERROR `await` is only allowed inside `async` functions and blocks | ||
//~^ ERROR incorrect use of `await` | ||
Ok(()) | ||
} | ||
fn foo14() -> Result<(), ()> { | ||
let _ = bar().await()?; //~ ERROR `await` is only allowed inside `async` functions and blocks | ||
//~^ ERROR incorrect use of `await` | ||
Ok(()) | ||
} | ||
fn foo15() -> Result<(), ()> { | ||
let _ = bar().await; //~ ERROR `await` is only allowed inside `async` functions and blocks | ||
Ok(()) | ||
} | ||
fn foo16() -> Result<(), ()> { | ||
let _ = bar().await?; //~ ERROR `await` is only allowed inside `async` functions and blocks | ||
Ok(()) | ||
} | ||
|
||
fn main() {} |
Oops, something went wrong.