diff options
| author | Dylan DPC <99973273+Dylan-DPC@users.noreply.github.com> | 2022-07-30 20:39:50 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-30 20:39:50 +0530 |
| commit | df2cf97830dde8f563b898820ffbba200253326b (patch) | |
| tree | 0bebcbcecc95ad4ab6936bdc0f04c484e453f71b | |
| parent | 79c947443f55bcbfc4a93fdd2ba98cbe50dc3c42 (diff) | |
| parent | d0e881eefe871d807fd7527a1366154f1712ada1 (diff) | |
| download | rust-df2cf97830dde8f563b898820ffbba200253326b.tar.gz rust-df2cf97830dde8f563b898820ffbba200253326b.zip | |
Rollup merge of #99903 - gimbles:pub, r=davidtwco
Add diagnostic when using public instead of pub Forwarding from https://github.com/rust-lang/rust/pull/99706 I accidentally broke something(??) in git and the commits in that PR are absolutely not what I did in that branch Anyways, this is the PR for this now. Adding tests again in a minute. cc `@davidtwco`
| -rw-r--r-- | compiler/rustc_parse/src/parser/diagnostics.rs | 11 | ||||
| -rw-r--r-- | src/test/ui/parser/public-instead-of-pub.fixed | 8 | ||||
| -rw-r--r-- | src/test/ui/parser/public-instead-of-pub.rs | 8 | ||||
| -rw-r--r-- | src/test/ui/parser/public-instead-of-pub.stderr | 13 |
4 files changed, 40 insertions, 0 deletions
diff --git a/compiler/rustc_parse/src/parser/diagnostics.rs b/compiler/rustc_parse/src/parser/diagnostics.rs index 63055c56c5c..09329f18c67 100644 --- a/compiler/rustc_parse/src/parser/diagnostics.rs +++ b/compiler/rustc_parse/src/parser/diagnostics.rs @@ -601,6 +601,17 @@ impl<'a> Parser<'a> { self.last_unexpected_token_span = Some(self.token.span); let mut err = self.struct_span_err(self.token.span, &msg_exp); + if let TokenKind::Ident(symbol, _) = &self.prev_token.kind { + if symbol.as_str() == "public" { + err.span_suggestion_short( + self.prev_token.span, + "write `pub` instead of `public` to make the item public", + "pub", + appl, + ); + } + } + // Add suggestion for a missing closing angle bracket if '>' is included in expected_tokens // there are unclosed angle brackets if self.unmatched_angle_bracket_count > 0 diff --git a/src/test/ui/parser/public-instead-of-pub.fixed b/src/test/ui/parser/public-instead-of-pub.fixed new file mode 100644 index 00000000000..01db609990e --- /dev/null +++ b/src/test/ui/parser/public-instead-of-pub.fixed @@ -0,0 +1,8 @@ +// Checks what happens when `public` is used instead of the correct, `pub` +// edition:2018 +// run-rustfix +pub struct X; +//~^ ERROR expected one of `!` or `::`, found keyword `struct` +//~^^ HELP write `pub` instead of `public` to make the item public + +fn main() {} diff --git a/src/test/ui/parser/public-instead-of-pub.rs b/src/test/ui/parser/public-instead-of-pub.rs new file mode 100644 index 00000000000..18e0fd3af1c --- /dev/null +++ b/src/test/ui/parser/public-instead-of-pub.rs @@ -0,0 +1,8 @@ +// Checks what happens when `public` is used instead of the correct, `pub` +// edition:2018 +// run-rustfix +public struct X; +//~^ ERROR expected one of `!` or `::`, found keyword `struct` +//~^^ HELP write `pub` instead of `public` to make the item public + +fn main() {} diff --git a/src/test/ui/parser/public-instead-of-pub.stderr b/src/test/ui/parser/public-instead-of-pub.stderr new file mode 100644 index 00000000000..af875491e85 --- /dev/null +++ b/src/test/ui/parser/public-instead-of-pub.stderr @@ -0,0 +1,13 @@ +error: expected one of `!` or `::`, found keyword `struct` + --> $DIR/public-instead-of-pub.rs:4:8 + | +LL | public struct X; + | ^^^^^^ expected one of `!` or `::` + | +help: write `pub` instead of `public` to make the item public + | +LL | pub struct X; + | ~~~ + +error: aborting due to previous error + |
