review comments
This commit is contained in:
parent
243496e129
commit
8bd8484972
3 changed files with 14 additions and 7 deletions
|
@ -95,10 +95,17 @@ impl<'tcx> LateLintPass<'tcx> for UnusedResults {
|
||||||
|
|
||||||
if let hir::ExprKind::Match(await_expr, _arms, hir::MatchSource::AwaitDesugar) = expr.kind
|
if let hir::ExprKind::Match(await_expr, _arms, hir::MatchSource::AwaitDesugar) = expr.kind
|
||||||
&& let ty = cx.typeck_results().expr_ty(&await_expr)
|
&& let ty = cx.typeck_results().expr_ty(&await_expr)
|
||||||
&& let ty::Opaque(def_id, _) = ty.kind()
|
&& let ty::Opaque(future_def_id, _) = ty.kind()
|
||||||
&& cx.tcx.ty_is_opaque_future(ty)
|
&& cx.tcx.ty_is_opaque_future(ty)
|
||||||
&& let parent = cx.tcx.parent(*def_id)
|
// FIXME: This also includes non-async fns that return `impl Future`.
|
||||||
&& check_must_use_def(cx, parent, expr.span, "awaited future returned by ", "")
|
&& let async_fn_def_id = cx.tcx.parent(*future_def_id)
|
||||||
|
&& check_must_use_def(
|
||||||
|
cx,
|
||||||
|
async_fn_def_id,
|
||||||
|
expr.span,
|
||||||
|
"output of future returned by ",
|
||||||
|
"",
|
||||||
|
)
|
||||||
{
|
{
|
||||||
// We have a bare `foo().await;` on an opaque type from an async function that was
|
// We have a bare `foo().await;` on an opaque type from an async function that was
|
||||||
// annotated with `#[must_use]`.
|
// annotated with `#[must_use]`.
|
||||||
|
|
|
@ -30,10 +30,10 @@ impl Wowee {
|
||||||
async fn test() {
|
async fn test() {
|
||||||
foo(); //~ ERROR unused return value of `foo` that must be used
|
foo(); //~ ERROR unused return value of `foo` that must be used
|
||||||
//~^ ERROR unused implementer of `Future` that must be used
|
//~^ ERROR unused implementer of `Future` that must be used
|
||||||
foo().await; //~ ERROR unused awaited future returned by `foo` that must be used
|
foo().await; //~ ERROR unused output of future returned by `foo` that must be used
|
||||||
bar(); //~ ERROR unused return value of `bar` that must be used
|
bar(); //~ ERROR unused return value of `bar` that must be used
|
||||||
//~^ ERROR unused implementer of `Future` that must be used
|
//~^ ERROR unused implementer of `Future` that must be used
|
||||||
bar().await; //~ ERROR unused awaited future returned by `bar` that must be used
|
bar().await; //~ ERROR unused output of future returned by `bar` that must be used
|
||||||
baz(); //~ ERROR unused implementer of `Future` that must be used
|
baz(); //~ ERROR unused implementer of `Future` that must be used
|
||||||
baz().await; // ok
|
baz().await; // ok
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ error: unused return value of `foo` that must be used
|
||||||
LL | foo();
|
LL | foo();
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
|
||||||
error: unused awaited future returned by `foo` that must be used
|
error: unused output of future returned by `foo` that must be used
|
||||||
--> $DIR/unused-async.rs:33:5
|
--> $DIR/unused-async.rs:33:5
|
||||||
|
|
|
|
||||||
LL | foo().await;
|
LL | foo().await;
|
||||||
|
@ -37,7 +37,7 @@ error: unused return value of `bar` that must be used
|
||||||
LL | bar();
|
LL | bar();
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
|
||||||
error: unused awaited future returned by `bar` that must be used
|
error: unused output of future returned by `bar` that must be used
|
||||||
--> $DIR/unused-async.rs:36:5
|
--> $DIR/unused-async.rs:36:5
|
||||||
|
|
|
|
||||||
LL | bar().await;
|
LL | bar().await;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue