Skip to content

Commit

Permalink
Auto merge of rust-lang#107663 - matthiaskrgr:107423-point-at-EOF-cod…
Browse files Browse the repository at this point in the history
…e, r=compiler-errors

don't point at nonexisting code beyond EOF when warning about delims

Previously we would show this:
```
warning: unnecessary braces around block return value
 --> /tmp/bad.rs:1:8
  |
1 | fn a(){{{
  |        ^  ^
  |
  = note: `#[warn(unused_braces)]` on by default
help: remove these braces
  |
1 - fn a(){{{
1 + fn a(){{
  |
```

which is now hidden in this case.
We would create a span spanning between the pair of redundant {}s but there is only EOF instead of the `}` so we would previously point at nothing. This would cause the debug assertion ice to trigger. I would have loved to just only point at the second delim and say "you can remove that" but I'm not sure how to do that without refactoring the entire diagnostic which seems tricky. :( But given that this does not seem to regress any other tests we have, I think this edge-casey enough be acceptable.

Fixes rust-lang#107423

r? `@compiler-errors`
  • Loading branch information
bors committed Feb 5, 2023
2 parents 319b88c + ed58c01 commit a676496
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 0 deletions.
4 changes: 4 additions & 0 deletions compiler/rustc_lint/src/unused.rs
Original file line number Diff line number Diff line change
Expand Up @@ -663,6 +663,10 @@ trait UnusedDelimLint {
keep_space: (bool, bool),
) {
let primary_span = if let Some((lo, hi)) = spans {
if hi.is_empty() {
// do not point at delims that do not exist
return;
}
MultiSpan::from(vec![lo, hi])
} else {
MultiSpan::from(value_span)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// check that we don't generate a span that points beyond EOF

// error-pattern: unclosed delimiter
// error-pattern: unclosed delimiter
// error-pattern: unclosed delimiter

fn a(){{{
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
error: this file contains an unclosed delimiter
--> $DIR/issue-107423-unused-delim-only-one-no-pair.rs:7:11
|
LL | fn a(){{{
| --- ^
| |||
| ||unclosed delimiter
| |unclosed delimiter
| unclosed delimiter

error: this file contains an unclosed delimiter
--> $DIR/issue-107423-unused-delim-only-one-no-pair.rs:7:11
|
LL | fn a(){{{
| --- ^
| |||
| ||unclosed delimiter
| |unclosed delimiter
| unclosed delimiter

error: this file contains an unclosed delimiter
--> $DIR/issue-107423-unused-delim-only-one-no-pair.rs:7:11
|
LL | fn a(){{{
| --- ^
| |||
| ||unclosed delimiter
| |unclosed delimiter
| unclosed delimiter

error: aborting due to 3 previous errors

0 comments on commit a676496

Please sign in to comment.