Skip to content

Commit

Permalink
feature gate doc(primitive)
Browse files Browse the repository at this point in the history
  • Loading branch information
jyn514 committed Aug 16, 2021
1 parent 2bd17c1 commit 03df654
Show file tree
Hide file tree
Showing 9 changed files with 49 additions and 7 deletions.
3 changes: 3 additions & 0 deletions compiler/rustc_feature/src/active.rs
Original file line number Diff line number Diff line change
Expand Up @@ -682,6 +682,9 @@ declare_features! (
/// Allows explicit generic arguments specification with `impl Trait` present.
(active, explicit_generic_args_with_impl_trait, "1.56.0", Some(83701), None),

/// Allows using doc(primitive) without a future-incompat warning
(active, doc_primitive, "1.56.0", Some(88070), None),

// -------------------------------------------------------------------------
// feature-group-end: actual feature gates
// -------------------------------------------------------------------------
Expand Down
17 changes: 16 additions & 1 deletion compiler/rustc_passes/src/check_attr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -794,9 +794,24 @@ impl CheckAttrVisitor<'tcx> {
| sym::notable_trait
| sym::passes
| sym::plugins
| sym::primitive
| sym::test => {}

sym::primitive => {
if !self.tcx.features().doc_primitive {
self.tcx.struct_span_lint_hir(
INVALID_DOC_ATTRIBUTES,
hir_id,
i_meta.span,
|lint| {
let mut diag = lint.build(
"`doc(primitive)` should never have been stable",
);
diag.emit();
},
);
}
}

_ => {
self.tcx.struct_span_lint_hir(
INVALID_DOC_ATTRIBUTES,
Expand Down
1 change: 1 addition & 0 deletions compiler/rustc_span/src/symbol.rs
Original file line number Diff line number Diff line change
Expand Up @@ -513,6 +513,7 @@ symbols! {
doc_keyword,
doc_masked,
doc_notable_trait,
doc_primitive,
doc_spotlight,
doctest,
document_private_items,
Expand Down
1 change: 1 addition & 0 deletions library/std/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,7 @@
#![feature(doc_keyword)]
#![feature(doc_masked)]
#![feature(doc_notable_trait)]
#![cfg_attr(not(bootstrap), feature(doc_primitive))]
#![feature(dropck_eyepatch)]
#![feature(duration_checked_float)]
#![feature(duration_constants)]
Expand Down
6 changes: 0 additions & 6 deletions src/doc/rustdoc/src/the-doc-attribute.md
Original file line number Diff line number Diff line change
Expand Up @@ -223,9 +223,3 @@ not eagerly inline it as a module unless you add `#[doc(inline)]`.

Any item annotated with `#[doc(hidden)]` will not appear in the documentation, unless
the `strip-hidden` pass is removed.

## `#[doc(primitive)]`

Since primitive types are defined in the compiler, there's no place to attach documentation
attributes. This attribute is used by the standard library to provide a way to generate
documentation for primitive types.
7 changes: 7 additions & 0 deletions src/doc/rustdoc/src/unstable-features.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,13 @@ Book][unstable-masked] and [its tracking issue][issue-masked].
[unstable-masked]: ../unstable-book/language-features/doc-masked.html
[issue-masked]: https://github.com/rust-lang/rust/issues/44027


## Document primitives

Since primitive types are defined in the compiler, there's no place to attach documentation
attributes. The `#[doc(primitive)]` attribute is used by the standard library to provide a way to generate
documentation for primitive types, and requires `#![feature(doc_primitive)]` to enable.

## Unstable command-line arguments

These features are enabled by passing a command-line flag to Rustdoc, but the flags in question are
Expand Down
1 change: 1 addition & 0 deletions src/test/rustdoc-ui/coverage/exotic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// check-pass

#![feature(doc_keyword)]
#![feature(doc_primitive)]

//! the features only used in std also have entries in the table, so make sure those get pulled out
//! properly as well
Expand Down
8 changes: 8 additions & 0 deletions src/test/ui/rustdoc/feature-gate-doc_primitive.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// check-pass
#[doc(primitive = "usize")]
//~^ WARNING `doc(primitive)` should never have been stable
//~| WARNING hard error in a future release
/// Some docs
mod usize {}

fn main() {}
12 changes: 12 additions & 0 deletions src/test/ui/rustdoc/feature-gate-doc_primitive.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
warning: `doc(primitive)` should never have been stable
--> $DIR/feature-gate-doc_primitive.rs:2:7
|
LL | #[doc(primitive = "usize")]
| ^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(invalid_doc_attributes)]` on by default
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #82730 <https://github.com/rust-lang/rust/issues/82730>

warning: 1 warning emitted

0 comments on commit 03df654

Please sign in to comment.