fix spans for removing .await
on for
expressions
This commit is contained in:
parent
6f97d838c6
commit
ccc4638d73
3 changed files with 20 additions and 2 deletions
|
@ -1644,7 +1644,7 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> {
|
||||||
|
|
||||||
// use nth(1) to skip one layer of desugaring from `IntoIter::into_iter`
|
// use nth(1) to skip one layer of desugaring from `IntoIter::into_iter`
|
||||||
if let Some((_, hir::Node::Expr(await_expr))) = hir.parent_iter(*hir_id).nth(1)
|
if let Some((_, hir::Node::Expr(await_expr))) = hir.parent_iter(*hir_id).nth(1)
|
||||||
&& let Some(expr_span) = expr.span.find_ancestor_inside(await_expr.span)
|
&& let Some(expr_span) = expr.span.find_ancestor_inside_same_ctxt(await_expr.span)
|
||||||
{
|
{
|
||||||
let removal_span = self
|
let removal_span = self
|
||||||
.tcx
|
.tcx
|
||||||
|
|
|
@ -31,4 +31,9 @@ async fn with_macros() {
|
||||||
f!(());
|
f!(());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Regression test for issue #117014.
|
||||||
|
async fn desugaring_span_ctxt() {
|
||||||
|
for x in [] {}.await //~ ERROR `()` is not a future
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -49,6 +49,19 @@ LL | f!(());
|
||||||
= note: required for `()` to implement `IntoFuture`
|
= note: required for `()` to implement `IntoFuture`
|
||||||
= note: this error originates in the macro `f` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `f` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error: aborting due to 3 previous errors
|
error[E0277]: `()` is not a future
|
||||||
|
--> $DIR/unnecessary-await.rs:36:20
|
||||||
|
|
|
||||||
|
LL | for x in [] {}.await
|
||||||
|
| -^^^^^
|
||||||
|
| ||
|
||||||
|
| |`()` is not a future
|
||||||
|
| help: remove the `.await`
|
||||||
|
|
|
||||||
|
= help: the trait `Future` is not implemented for `()`
|
||||||
|
= note: () must be a future or must implement `IntoFuture` to be awaited
|
||||||
|
= note: required for `()` to implement `IntoFuture`
|
||||||
|
|
||||||
|
error: aborting due to 4 previous errors
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0277`.
|
For more information about this error, try `rustc --explain E0277`.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue