diff options
| author | bors <bors@rust-lang.org> | 2021-12-16 23:08:02 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-12-16 23:08:02 +0000 |
| commit | 23c2723269e14c3b037feb2c4865a82053403649 (patch) | |
| tree | 4fb376635d56124b2dfff2b7a87339b693f0fe62 /src | |
| parent | 5531927e8af9b99ad923af4c827c91038bca51ee (diff) | |
| parent | a97384d94c7042427e076cf78c6138e6b76a1c81 (diff) | |
Auto merge of #92003 - matthiaskrgr:rollup-obgv0rt, r=matthiaskrgr
Rollup of 7 pull requests Successful merges: - #91172 (Warn when a `#[test]`-like built-in attribute macro is present multiple times.) - #91796 (Fix since attribute for const_manually_drop feature) - #91879 (Remove `in_band_lifetimes` from `rustc_borrowck`) - #91947 (Add `io::Error::other`) - #91967 (Pull in libdevstat on FreeBSD) - #91987 (Add module documentation for rustdoc passes) - #92001 (Fix default_method_body_is_const when used across crates) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'src')
| -rwxr-xr-x | src/ci/docker/scripts/freebsd-toolchain.sh | 2 | ||||
| -rw-r--r-- | src/librustdoc/passes/bare_urls.rs | 2 | ||||
| -rw-r--r-- | src/librustdoc/passes/calculate_doc_coverage.rs | 1 | ||||
| -rw-r--r-- | src/librustdoc/passes/check_code_block_syntax.rs | 1 | ||||
| -rw-r--r-- | src/librustdoc/passes/check_doc_test_visibility.rs | 2 | ||||
| -rw-r--r-- | src/librustdoc/passes/collect_trait_impls.rs | 3 | ||||
| -rw-r--r-- | src/librustdoc/passes/html_tags.rs | 1 | ||||
| -rw-r--r-- | src/librustdoc/passes/propagate_doc_cfg.rs | 1 | ||||
| -rw-r--r-- | src/librustdoc/passes/strip_hidden.rs | 1 | ||||
| -rw-r--r-- | src/librustdoc/passes/strip_priv_imports.rs | 2 | ||||
| -rw-r--r-- | src/librustdoc/passes/strip_private.rs | 2 | ||||
| -rw-r--r-- | src/librustdoc/passes/stripper.rs | 1 | ||||
| -rw-r--r-- | src/librustdoc/passes/unindent_comments.rs | 13 | ||||
| -rw-r--r-- | src/test/ui/attributes/duplicated-attributes.rs | 41 | ||||
| -rw-r--r-- | src/test/ui/attributes/duplicated-attributes.stderr | 22 | ||||
| -rw-r--r-- | src/test/ui/rfc-2632-const-trait-impl/auxiliary/cross-crate.rs | 3 | ||||
| -rw-r--r-- | src/test/ui/rfc-2632-const-trait-impl/cross-crate-default-method-body-is-const.rs | 18 |
17 files changed, 115 insertions, 1 deletions
diff --git a/src/ci/docker/scripts/freebsd-toolchain.sh b/src/ci/docker/scripts/freebsd-toolchain.sh index de6b52a5e00..2f7c57bcdc4 100755 --- a/src/ci/docker/scripts/freebsd-toolchain.sh +++ b/src/ci/docker/scripts/freebsd-toolchain.sh @@ -53,7 +53,7 @@ files_to_extract=( for lib in c cxxrt gcc_s m thr util; do files_to_extract=("${files_to_extract[@]}" "./lib/lib${lib}.*" "./usr/lib/lib${lib}.*") done -for lib in c++ c_nonshared compiler_rt execinfo gcc pthread rt ssp_nonshared procstat kvm; do +for lib in c++ c_nonshared compiler_rt execinfo gcc pthread rt ssp_nonshared procstat devstat kvm; do files_to_extract=("${files_to_extract[@]}" "./usr/lib/lib${lib}.*") done diff --git a/src/librustdoc/passes/bare_urls.rs b/src/librustdoc/passes/bare_urls.rs index 4e146a07d15..3410f46e2a8 100644 --- a/src/librustdoc/passes/bare_urls.rs +++ b/src/librustdoc/passes/bare_urls.rs @@ -1,3 +1,5 @@ +//! Detects links that are not linkified, e.g., in Markdown such as `Go to https://example.com/.` +//! Suggests wrapping the link with angle brackets: `Go to <https://example.com/>.` to linkify it. use super::Pass; use crate::clean::*; use crate::core::DocContext; diff --git a/src/librustdoc/passes/calculate_doc_coverage.rs b/src/librustdoc/passes/calculate_doc_coverage.rs index 85542ebd9ac..6111c982de9 100644 --- a/src/librustdoc/passes/calculate_doc_coverage.rs +++ b/src/librustdoc/passes/calculate_doc_coverage.rs @@ -1,3 +1,4 @@ +//! Calculates information used for the --show-coverage flag. use crate::clean; use crate::core::DocContext; use crate::html::markdown::{find_testable_code, ErrorCodes}; diff --git a/src/librustdoc/passes/check_code_block_syntax.rs b/src/librustdoc/passes/check_code_block_syntax.rs index fd2ab0dc97c..a50bf558bf3 100644 --- a/src/librustdoc/passes/check_code_block_syntax.rs +++ b/src/librustdoc/passes/check_code_block_syntax.rs @@ -1,3 +1,4 @@ +//! Validates syntax inside Rust code blocks (\`\`\`rust). use rustc_data_structures::sync::{Lock, Lrc}; use rustc_errors::{emitter::Emitter, Applicability, Diagnostic, Handler}; use rustc_middle::lint::LintDiagnosticBuilder; diff --git a/src/librustdoc/passes/check_doc_test_visibility.rs b/src/librustdoc/passes/check_doc_test_visibility.rs index 7d3010cf332..b86ec8abefa 100644 --- a/src/librustdoc/passes/check_doc_test_visibility.rs +++ b/src/librustdoc/passes/check_doc_test_visibility.rs @@ -1,3 +1,5 @@ +//! Looks for items missing (or incorrectly having) doctests. +//! //! This pass is overloaded and runs two different lints. //! //! - MISSING_DOC_CODE_EXAMPLES: this lint is **UNSTABLE** and looks for public items missing doctests. diff --git a/src/librustdoc/passes/collect_trait_impls.rs b/src/librustdoc/passes/collect_trait_impls.rs index 8524f872ca3..baa0c7595eb 100644 --- a/src/librustdoc/passes/collect_trait_impls.rs +++ b/src/librustdoc/passes/collect_trait_impls.rs @@ -1,3 +1,6 @@ +//! Collects trait impls for each item in the crate. For example, if a crate +//! defines a struct that implements a trait, this pass will note that the +//! struct implements that trait. use super::Pass; use crate::clean::*; use crate::core::DocContext; diff --git a/src/librustdoc/passes/html_tags.rs b/src/librustdoc/passes/html_tags.rs index 56b222d8932..f7a9a0899e3 100644 --- a/src/librustdoc/passes/html_tags.rs +++ b/src/librustdoc/passes/html_tags.rs @@ -1,3 +1,4 @@ +//! Detects invalid HTML (like an unclosed `<span>`) in doc comments. use super::Pass; use crate::clean::*; use crate::core::DocContext; diff --git a/src/librustdoc/passes/propagate_doc_cfg.rs b/src/librustdoc/passes/propagate_doc_cfg.rs index f5a362bfbe8..d3df2d2794b 100644 --- a/src/librustdoc/passes/propagate_doc_cfg.rs +++ b/src/librustdoc/passes/propagate_doc_cfg.rs @@ -1,3 +1,4 @@ +//! Propagates [`#[doc(cfg(...))]`](https://github.com/rust-lang/rust/issues/43781) to child items. use std::sync::Arc; use crate::clean::cfg::Cfg; diff --git a/src/librustdoc/passes/strip_hidden.rs b/src/librustdoc/passes/strip_hidden.rs index 0aedbda35e9..e63534659ad 100644 --- a/src/librustdoc/passes/strip_hidden.rs +++ b/src/librustdoc/passes/strip_hidden.rs @@ -1,3 +1,4 @@ +//! Strip all doc(hidden) items from the output. use rustc_span::symbol::sym; use std::mem; diff --git a/src/librustdoc/passes/strip_priv_imports.rs b/src/librustdoc/passes/strip_priv_imports.rs index 63869324cb8..21ce9ae7a28 100644 --- a/src/librustdoc/passes/strip_priv_imports.rs +++ b/src/librustdoc/passes/strip_priv_imports.rs @@ -1,3 +1,5 @@ +//! Strips all private import statements (use, extern crate) from a +//! crate. use crate::clean; use crate::core::DocContext; use crate::fold::DocFolder; diff --git a/src/librustdoc/passes/strip_private.rs b/src/librustdoc/passes/strip_private.rs index dfdba2a4b36..c6b5bec4692 100644 --- a/src/librustdoc/passes/strip_private.rs +++ b/src/librustdoc/passes/strip_private.rs @@ -1,3 +1,5 @@ +//! Strip all private items from the output. Additionally implies strip_priv_imports. +//! Basically, the goal is to remove items that are not relevant for public documentation. use crate::clean::{self, ItemIdSet}; use crate::core::DocContext; use crate::fold::DocFolder; diff --git a/src/librustdoc/passes/stripper.rs b/src/librustdoc/passes/stripper.rs index 74a9a2da06d..675443b48a2 100644 --- a/src/librustdoc/passes/stripper.rs +++ b/src/librustdoc/passes/stripper.rs @@ -1,3 +1,4 @@ +//! A collection of utility functions for the `strip_*` passes. use rustc_hir::def_id::DefId; use rustc_middle::middle::privacy::AccessLevels; use std::mem; diff --git a/src/librustdoc/passes/unindent_comments.rs b/src/librustdoc/passes/unindent_comments.rs index 97f4f941e06..6cac31d2f90 100644 --- a/src/librustdoc/passes/unindent_comments.rs +++ b/src/librustdoc/passes/unindent_comments.rs @@ -1,3 +1,16 @@ +//! Removes excess indentation on comments in order for the Markdown +//! to be parsed correctly. This is necessary because the convention for +//! writing documentation is to provide a space between the /// or //! marker +//! and the doc text, but Markdown is whitespace-sensitive. For example, +//! a block of text with four-space indentation is parsed as a code block, +//! so if we didn't unindent comments, these list items +//! +//! /// A list: +//! /// +//! /// - Foo +//! /// - Bar +//! +//! would be parsed as if they were in a code block, which is likely not what the user intended. use std::cmp; use rustc_span::symbol::kw; diff --git a/src/test/ui/attributes/duplicated-attributes.rs b/src/test/ui/attributes/duplicated-attributes.rs new file mode 100644 index 00000000000..84a5abcf8b4 --- /dev/null +++ b/src/test/ui/attributes/duplicated-attributes.rs @@ -0,0 +1,41 @@ +// Test that, if an item is annotated with a builtin attribute more than once, a warning is +// emitted. +// Tests https://github.com/rust-lang/rust/issues/90979 + +// check-pass +// compile-flags: --test + +#![feature(test)] +#![feature(cfg_eval)] + +#[test] +#[test] +//~^ WARNING duplicated attribute +fn f() {} + +// The following shouldn't trigger an error. The attribute is not duplicated. +#[test] +fn f2() {} + +// The following shouldn't trigger an error either. The second attribute is not #[test]. +#[test] +#[inline] +fn f3() {} + +extern crate test; +use test::Bencher; + +#[bench] +#[bench] +//~^ WARNING duplicated attribute +fn f4(_: &mut Bencher) {} + +#[cfg_eval] +#[cfg_eval] +//~^ WARNING duplicated attribute +struct S; + +#[cfg_eval] +struct S2; + +fn main() {} diff --git a/src/test/ui/attributes/duplicated-attributes.stderr b/src/test/ui/attributes/duplicated-attributes.stderr new file mode 100644 index 00000000000..735d950b27c --- /dev/null +++ b/src/test/ui/attributes/duplicated-attributes.stderr @@ -0,0 +1,22 @@ +warning: duplicated attribute + --> $DIR/duplicated-attributes.rs:12:1 + | +LL | #[test] + | ^^^^^^^ + | + = note: `#[warn(duplicate_macro_attributes)]` on by default + +warning: duplicated attribute + --> $DIR/duplicated-attributes.rs:29:1 + | +LL | #[bench] + | ^^^^^^^^ + +warning: duplicated attribute + --> $DIR/duplicated-attributes.rs:34:1 + | +LL | #[cfg_eval] + | ^^^^^^^^^^^ + +warning: 3 warnings emitted + diff --git a/src/test/ui/rfc-2632-const-trait-impl/auxiliary/cross-crate.rs b/src/test/ui/rfc-2632-const-trait-impl/auxiliary/cross-crate.rs index d8fd7ef3c1f..2d049277d7f 100644 --- a/src/test/ui/rfc-2632-const-trait-impl/auxiliary/cross-crate.rs +++ b/src/test/ui/rfc-2632-const-trait-impl/auxiliary/cross-crate.rs @@ -1,6 +1,9 @@ +#![feature(const_fn_trait_bound)] #![feature(const_trait_impl)] pub trait MyTrait { + #[default_method_body_is_const] + fn defaulted_func(&self) {} fn func(self); } diff --git a/src/test/ui/rfc-2632-const-trait-impl/cross-crate-default-method-body-is-const.rs b/src/test/ui/rfc-2632-const-trait-impl/cross-crate-default-method-body-is-const.rs new file mode 100644 index 00000000000..c0f90c116e4 --- /dev/null +++ b/src/test/ui/rfc-2632-const-trait-impl/cross-crate-default-method-body-is-const.rs @@ -0,0 +1,18 @@ +// This tests that `default_method_body_is_const` methods can +// be called from a const context when used across crates. +// +// check-pass + +#![feature(const_trait_impl)] + +// aux-build: cross-crate.rs +extern crate cross_crate; + +use cross_crate::*; + +const _: () = { + Const.func(); + Const.defaulted_func(); +}; + +fn main() {} |
