diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2021-11-20 10:21:16 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-20 10:21:16 +0100 |
| commit | 3379721a30d87c396df69efa15b1307389d408df (patch) | |
| tree | 1f6d1eda299714e7603c2407eb24481ce0ac3215 /compiler/rustc_llvm/llvm-wrapper | |
| parent | 59c9c66bc019bec1c21dd5ac9b74b6b4a3468403 (diff) | |
| parent | f6392a16142425cdb7520440583262ffb374b0d5 (diff) | |
| download | rust-3379721a30d87c396df69efa15b1307389d408df.tar.gz rust-3379721a30d87c396df69efa15b1307389d408df.zip | |
Rollup merge of #91021 - compiler-errors:print_future_output, r=estebank
Elaborate `Future::Output` when printing opaque `impl Future` type
I would love to see the `Output =` type when printing type errors involving opaque `impl Future`.
[Test code](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=a800b481edd31575fbcaf5771a9c3678)
Before (cut relevant part of output):
```
note: while checking the return type of the `async fn`
--> /home/michael/test.rs:5:19
|
5 | async fn bar() -> usize {
| ^^^^^ checked the `Output` of this `async fn`, found opaque type
= note: expected type `usize`
found opaque type `impl Future`
```
After:
```
note: while checking the return type of the `async fn`
--> /home/michael/test.rs:5:19
|
5 | async fn bar() -> usize {
| ^^^^^ checked the `Output` of this `async fn`, found opaque type
= note: expected type `usize`
found opaque type `impl Future<Output = usize>`
```
Note the "found opaque type `impl Future<Output = usize>`" in the new output.
----
Questions:
1. We skip printing the output type when it's a projection, since I have been seeing some types like `impl Future<Output = <[static generator@/home/michael/test.rs:2:11: 2:21] as Generator<ResumeTy>>::Return>` which are not particularly helpful and leak implementation detail.
* Am I able to normalize this type within `rustc_middle::ty::print::pretty`? Alternatively, can we normalize it when creating the diagnostic? Otherwise, I'm fine with skipping it and falling back to the old output.
* Should I suppress any other types? I didn't encounter anything other than this generator projection type.
2. Not sure what the formatting of this should be. Do I include spaces in `Output = `?
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper')
0 files changed, 0 insertions, 0 deletions
