diff --git a/src/librustc_typeck/check/generator_interior.rs b/src/librustc_typeck/check/generator_interior.rs index 0bd078dace4..7e4768d81b8 100644 --- a/src/librustc_typeck/check/generator_interior.rs +++ b/src/librustc_typeck/check/generator_interior.rs @@ -75,7 +75,7 @@ impl<'a, 'tcx> InteriorVisitor<'a, 'tcx> { // If unresolved type isn't a ty_var then unresolved_type_span is None self.fcx.need_type_info_err_in_generator( self.kind, - unresolved_type_span.unwrap_or(yield_data.span), + unresolved_type_span.unwrap_or(source_span), unresolved_type, ) .span_note(yield_data.span, &*note) diff --git a/src/test/ui/async-await/async-error-span.rs b/src/test/ui/async-await/async-error-span.rs new file mode 100644 index 00000000000..d362348a3fd --- /dev/null +++ b/src/test/ui/async-await/async-error-span.rs @@ -0,0 +1,17 @@ +// edition:2018 +#![feature(async_await)] + +// Regression test for issue #62382 + +use std::future::Future; + +fn get_future() -> impl Future { + panic!() +} + +async fn foo() { + let a; //~ ERROR type inside `async` object must be known in this context + get_future().await; +} + +fn main() {} diff --git a/src/test/ui/async-await/async-error-span.stderr b/src/test/ui/async-await/async-error-span.stderr new file mode 100644 index 00000000000..bd8966b9c7d --- /dev/null +++ b/src/test/ui/async-await/async-error-span.stderr @@ -0,0 +1,15 @@ +error[E0698]: type inside `async` object must be known in this context + --> $DIR/async-error-span.rs:13:9 + | +LL | let a; + | ^ cannot infer type + | +note: the type is part of the `async` object because of this `await` + --> $DIR/async-error-span.rs:14:5 + | +LL | get_future().await; + | ^^^^^^^^^^^^^^^^^^ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0698`.