diff options
| author | bors <bors@rust-lang.org> | 2021-09-16 22:17:33 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-09-16 22:17:33 +0000 |
| commit | e36621057d9f497c822eb800934b5933c10510cf (patch) | |
| tree | 1aeafe4f0f8accab0b051984959e3ef8e7ae24fd /compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp | |
| parent | e4828d5b7f745a9e867a9b0cc7f080f287bcf55d (diff) | |
| parent | 0a4540b08f4d43c8d8d9f4de3d78daa5fcfd8b8f (diff) | |
| download | rust-e36621057d9f497c822eb800934b5933c10510cf.tar.gz rust-e36621057d9f497c822eb800934b5933c10510cf.zip | |
Auto merge of #88719 - estebank:point-at-arg-for-obligation, r=nagisa
Point at argument instead of call for their obligations
When an obligation is introduced by a specific `fn` argument, point at
the argument instead of the `fn` call if the obligation fails to be
fulfilled.
Move the information about pointing at the call argument expression in
an unmet obligation span from the `FulfillmentError` to a new
`ObligationCauseCode`.
When giving an error about an obligation introduced by a function call
that an argument doesn't fulfill, and that argument is a block, add a
span_label pointing at the innermost tail expression.
Current output:
```
error[E0425]: cannot find value `x` in this scope
--> f10.rs:4:14
|
4 | Some(x * 2)
| ^ not found in this scope
error[E0277]: expected a `FnOnce<({integer},)>` closure, found `Option<_>`
--> f10.rs:2:31
|
2 | let p = Some(45).and_then({
| ______________________--------_^
| | |
| | required by a bound introduced by this call
3 | | |x| println!("doubling {}", x);
4 | | Some(x * 2)
| | -----------
5 | | });
| |_____^ expected an `FnOnce<({integer},)>` closure, found `Option<_>`
|
= help: the trait `FnOnce<({integer},)>` is not implemented for `Option<_>`
```
Previous output:
```
error[E0425]: cannot find value `x` in this scope
--> f10.rs:4:14
|
4 | Some(x * 2)
| ^ not found in this scope
error[E0277]: expected a `FnOnce<({integer},)>` closure, found `Option<_>`
--> f10.rs:2:22
|
2 | let p = Some(45).and_then({
| ^^^^^^^^ expected an `FnOnce<({integer},)>` closure, found `Option<_>`
|
= help: the trait `FnOnce<({integer},)>` is not implemented for `Option<_>`
```
Partially address #27300. Will require rebasing on top of #88546.
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
