Skip to content

Commit

Permalink
Unrolled build for rust-lang#123694
Browse files Browse the repository at this point in the history
Rollup merge of rust-lang#123694 - Xiretza:expand-diagnostics, r=compiler-errors

expand: fix minor diagnostics bug

The error mentions `///`, when it's actually `//!`:

```
error[E0658]: attributes on expressions are experimental
 --> test.rs:4:9
  |
4 |         //! wah
  |         ^^^^^^^
  |
  = note: see issue rust-lang#15701 <rust-lang#15701> for more information
  = help: add `#![feature(stmt_expr_attributes)]` to the crate attributes to enable
  = help: `///` is for documentation comments. For a plain comment, use `//`.
```
  • Loading branch information
rust-timer authored May 17, 2024
2 parents 8af67ba + 3289a9a commit 98c01cd
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 5 deletions.
5 changes: 5 additions & 0 deletions compiler/rustc_expand/messages.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ expand_attribute_meta_item =
expand_attribute_single_word =
attribute must only be a single word
expand_attributes_on_expressions_experimental =
attributes on expressions are experimental
.help_outer_doc = `///` is used for outer documentation comments; for a plain comment, use `//`
.help_inner_doc = `//!` is used for inner documentation comments; for a plain comment, use `//` by removing the `!` or inserting a space in between them: `// !`
expand_attributes_wrong_form =
attribute must be of form: `attributes(foo, bar)`
Expand Down
9 changes: 6 additions & 3 deletions compiler/rustc_expand/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -382,7 +382,6 @@ impl<'a> StripUnconfigured<'a> {
}

/// If attributes are not allowed on expressions, emit an error for `attr`
#[allow(rustc::untranslatable_diagnostic)] // FIXME: make this translatable
#[instrument(level = "trace", skip(self))]
pub(crate) fn maybe_emit_expr_attr_err(&self, attr: &Attribute) {
if self.features.is_some_and(|features| !features.stmt_expr_attributes)
Expand All @@ -392,11 +391,15 @@ impl<'a> StripUnconfigured<'a> {
&self.sess,
sym::stmt_expr_attributes,
attr.span,
"attributes on expressions are experimental",
crate::fluent_generated::expand_attributes_on_expressions_experimental,
);

if attr.is_doc_comment() {
err.help("`///` is for documentation comments. For a plain comment, use `//`.");
err.help(if attr.style == AttrStyle::Outer {
crate::fluent_generated::expand_help_outer_doc
} else {
crate::fluent_generated::expand_help_inner_doc
});
}

err.emit();
Expand Down
11 changes: 11 additions & 0 deletions tests/ui/feature-gates/feature-gate-stmt_expr_attributes.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,15 @@
const X: i32 = #[allow(dead_code)] 8;
//~^ ERROR attributes on expressions are experimental

const Y: i32 =
/// foo
//~^ ERROR attributes on expressions are experimental
8;

const Z: i32 = {
//! foo
//~^ ERROR attributes on expressions are experimental
8
};

fn main() {}
24 changes: 23 additions & 1 deletion tests/ui/feature-gates/feature-gate-stmt_expr_attributes.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,28 @@ LL | const X: i32 = #[allow(dead_code)] 8;
= help: add `#![feature(stmt_expr_attributes)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date

error: aborting due to 1 previous error
error[E0658]: attributes on expressions are experimental
--> $DIR/feature-gate-stmt_expr_attributes.rs:5:5
|
LL | /// foo
| ^^^^^^^
|
= note: see issue #15701 <https://github.com/rust-lang/rust/issues/15701> for more information
= help: add `#![feature(stmt_expr_attributes)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
= help: `///` is used for outer documentation comments; for a plain comment, use `//`

error[E0658]: attributes on expressions are experimental
--> $DIR/feature-gate-stmt_expr_attributes.rs:10:5
|
LL | //! foo
| ^^^^^^^
|
= note: see issue #15701 <https://github.com/rust-lang/rust/issues/15701> for more information
= help: add `#![feature(stmt_expr_attributes)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
= help: `//!` is used for inner documentation comments; for a plain comment, use `//` by removing the `!` or inserting a space in between them: `// !`

error: aborting due to 3 previous errors

For more information about this error, try `rustc --explain E0658`.
2 changes: 1 addition & 1 deletion tests/ui/lint/unused/unused-doc-comments-edge-cases.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ LL | (/// useless doc comment
= note: see issue #15701 <https://github.com/rust-lang/rust/issues/15701> for more information
= help: add `#![feature(stmt_expr_attributes)]` to the crate attributes to enable
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
= help: `///` is for documentation comments. For a plain comment, use `//`.
= help: `///` is used for outer documentation comments; for a plain comment, use `//`

error: unused doc comment
--> $DIR/unused-doc-comments-edge-cases.rs:6:9
Expand Down

0 comments on commit 98c01cd

Please sign in to comment.