Skip to content

Commit

Permalink
Rollup merge of rust-lang#122160 - jieyouxu:eager-translate-help-use-…
Browse files Browse the repository at this point in the history
…latest-edition, r=cjgillot

Eagerly translate `HelpUseLatestEdition` in parser diagnostics

Fixes rust-lang#122130.

This makes me suspicious of these other two usage of  `add_to_diagnostic()`. Would they *also* crash? I haven't attempted to construct test cases for them.

```
compiler/rustc_parse/src/parser/expr.rs
3453:            errors::HelpUseLatestEdition::new().add_to_diagnostic(e);

compiler/rustc_hir_typeck/src/expr.rs
2603:            HelpUseLatestEdition::new().add_to_diagnostic(&mut err);
```

This also seems like a footgun?
  • Loading branch information
matthiaskrgr authored Mar 9, 2024
2 parents 36edf0f + 4663fbb commit 63d1607
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 1 deletion.
2 changes: 1 addition & 1 deletion compiler/rustc_parse/src/parser/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -667,7 +667,7 @@ impl<'a> Parser<'a> {
{
err.note("you may be trying to write a c-string literal");
err.note("c-string literals require Rust 2021 or later");
HelpUseLatestEdition::new().add_to_diagnostic(&mut err);
err.subdiagnostic(self.dcx(), HelpUseLatestEdition::new());
}

// `pub` may be used for an item or `pub(crate)`
Expand Down
5 changes: 5 additions & 0 deletions tests/ui/parser/help-set-edition-ice-122130.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
enum will {
s#[c"owned_box"]
//~^ERROR expected one of `(`, `,`, `=`, `{`, or `}`, found `#`
//~|ERROR expected item, found `"owned_box"`
}
21 changes: 21 additions & 0 deletions tests/ui/parser/help-set-edition-ice-122130.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
error: expected one of `(`, `,`, `=`, `{`, or `}`, found `#`
--> $DIR/help-set-edition-ice-122130.rs:2:6
|
LL | s#[c"owned_box"]
| ^ expected one of `(`, `,`, `=`, `{`, or `}`
|
= note: you may be trying to write a c-string literal
= note: c-string literals require Rust 2021 or later
= help: pass `--edition 2021` to `rustc`
= note: for more on editions, read https://doc.rust-lang.org/edition-guide

error: expected item, found `"owned_box"`
--> $DIR/help-set-edition-ice-122130.rs:2:9
|
LL | s#[c"owned_box"]
| ^^^^^^^^^^^ expected item
|
= note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>

error: aborting due to 2 previous errors

0 comments on commit 63d1607

Please sign in to comment.